Hutool Hutool
(opens new window)
🏡首页
📖指南
🎢最佳实践
💖支持
💡javaDoc (opens new window)
⏳更新记录 (opens new window)
  • 🍎gitee (opens new window)
  • 🍏github (opens new window)
(opens new window)
🏡首页
📖指南
🎢最佳实践
💖支持
💡javaDoc (opens new window)
⏳更新记录 (opens new window)
  • 🍎gitee (opens new window)
  • 🍏github (opens new window)
  • 快速入门

  • 核心(hutool-core)

    • AI(Hutool-ai)

    • 注解(annotation)

    • 数组(array)

    • JavaBean(bean)

    • 缓存(cache)

    • 类加载器(classloader)

    • 编码解码(codec)

    • 集合(collection)

    • 比较器(comparator)

    • 压缩(compress)

    • 类型转换(convert)

    • 数据(data)

    • 日期时间(date)

    • 异常(exception)

    • 函数(func)

    • IO流(io)

    • 语言特性(lang)

    • Map(map)

    • 数字数学(math)

      • 数字数学
        • 模块概述
        • JDK数学模块对比
          • JDK数学模块的不足
          • Hutool数字数学模块的优势
        • 核心类结构
        • 模块使用场景
        • 快速开始
          • 数字转换
          • 数字格式化
          • 数学计算
          • 位运算
        • 总结
      • NumberUtil
      • MathUtil
      • BitStatusUtil
    • 网络(net)

    • 对象池(pool)

    • 反射(reflect)

    • 正则(regex)

    • 服务提供(spi)

    • 聚合操作(stream)

    • 字符串文本(text)

    • 并发和线程(thread)

    • 树结构(tree)

    • 工具集合(util)

    • XML操作(xml)

  • 定时任务(hutool-cron)

  • 加密(hutool-crypto)

  • 数据库(hutool-db)

  • 扩展(hutool-extra)

  • HTTP(hutool-http)

  • 日志(hutool-log)

  • 配置文件(hutool-setting)

  • JSON(hutool-json)

  • Office办公(hutool-poi)

  • 套接字(hutool-socket)

  • GUI(hutool-swing)

  • 指南
  • 核心(hutool-core)
  • 数字数学(math)
Hutool
2023-12-28
目录

数字数学

数字数学模块是Hutool的核心模块之一,提供了丰富的数学计算和数字处理功能,涵盖了从基础的数字转换、格式化到复杂的数学计算、统计分析等多个方面。

# 模块概述

数字数学模块主要包括以下功能:

  • 数字转换与解析:字符串转数字、数字转字符串、进制转换等
  • 数字格式化:中文数字、英文数字、罗马数字格式化
  • 数学计算:基本运算、三角函数、随机数生成等
  • 统计分析:平均值、方差、标准差、最大值、最小值等
  • 位运算:位状态管理、位操作等
  • 特殊数值处理:分数、金额等
  • 排列组合:排列计算、组合计算
  • 计算器:表达式计算

# JDK数学模块对比

# JDK数学模块的不足

  1. 功能分散:JDK的数学功能分散在多个类中,如Math、BigDecimal、NumberFormat等,使用不够集中
  2. API复杂:某些操作API设计较为复杂,需要多次调用或转换
  3. 缺少常用功能:缺少中文数字转换、金额处理、位状态管理等常用功能
  4. 精度问题:浮点数计算存在精度问题,需要手动处理
  5. 缺少便捷方法:缺少一些常用的便捷方法,如数字验证、范围判断等

# Hutool数字数学模块的优势

  1. 功能集中:将所有数学相关功能集中在几个核心工具类中,使用方便
  2. API简洁:提供简洁易用的API,减少代码量
  3. 功能丰富:提供了JDK没有的多种功能,如中文数字转换、金额处理等
  4. 精度保证:内置高精度计算,避免浮点数精度问题
  5. 便捷方法丰富:提供了大量便捷方法,如数字验证、范围判断、统计分析等
  6. 类型安全:提供了类型安全的方法,避免类型转换错误

# 核心类结构

类名 主要功能
NumberUtil 数字处理工具类,提供数字转换、格式化、计算、统计等功能
MathUtil 数学计算工具类,提供数学函数、随机数生成等功能
BitStatusUtil 位状态工具类,用于管理和操作位状态
Fraction 分数类,用于精确的分数计算
Money 金额类,用于精确的金额计算和格式化
NumberParser 数字解析类,用于将字符串解析为数字
NumberValidator 数字验证类,用于验证数字格式
Arrangement 排列类,用于计算排列数和生成排列
Combination 组合类,用于计算组合数和生成组合
Calculator 计算器类,用于计算数学表达式
ChineseNumberFormatter 中文数字格式化类
EnglishNumberFormatter 英文数字格式化类
RomanNumberFormatter 罗马数字格式化类

# 模块使用场景

  • 金融领域:精确的金额计算、格式化
  • 数据分析:统计分析、数值计算
  • 游戏开发:随机数生成、概率计算
  • 科学计算:复杂的数学函数计算
  • 数据验证:数字格式验证、范围验证
  • 数字展示:多种格式的数字展示(中文、英文、罗马数字等)
  • 位运算:权限管理、状态标记等

# 快速开始

# 数字转换

// 字符串转数字
int num = NumberUtil.parseInt("123");
double d = NumberUtil.parseDouble("123.456");

// 数字转字符串
String str = NumberUtil.toString(123);
String str2 = NumberUtil.toString(123.456, 2); // 保留两位小数

// 进制转换
String hex = NumberUtil.toHex(123); // 十进制转十六进制
int decimal = NumberUtil.toInt("7B", 16); // 十六进制转十进制

# 数字格式化

// 中文数字格式化
String chinese = NumberUtil.formatChinese(123); // "一百二十三"
String chineseMoney = NumberUtil.formatChineseMoney(123.45); // "壹佰贰拾叁元肆角伍分"

// 英文数字格式化
String english = NumberUtil.formatEnglish(123); // "one hundred and twenty-three"

// 罗马数字格式化
String roman = NumberUtil.formatRoman(123); // "CXXIII"

# 数学计算

// 基本运算
double sum = NumberUtil.add(1.23, 4.56); // 5.79
double sub = NumberUtil.sub(5.79, 1.23); // 4.56
double mul = NumberUtil.mul(2.5, 4.0); // 10.0
double div = NumberUtil.div(10.0, 4.0); // 2.5

// 统计分析
List<Double> list = ListUtil.of(1.0, 2.0, 3.0, 4.0, 5.0);
double avg = NumberUtil.avg(list); // 3.0
double max = NumberUtil.max(list); // 5.0
double min = NumberUtil.min(list); // 1.0

# 位运算

// 位状态管理
long status = 0;
status = BitStatusUtil.set(status, 1); // 设置第1位
status = BitStatusUtil.set(status, 3); // 设置第3位
boolean has1 = BitStatusUtil.has(status, 1); // true
boolean has2 = BitStatusUtil.has(status, 2); // false
status = BitStatusUtil.clear(status, 1); // 清除第1位

# 总结

数字数学模块是Hutool的核心模块之一,提供了丰富的数学计算和数字处理功能。通过使用该模块,可以大大简化Java中的数字处理和数学计算,提高开发效率。无论是简单的数字转换,还是复杂的数学计算,Hutool都能提供简洁高效的解决方案。

接下来,我们将详细介绍数字数学模块中的核心工具类,包括NumberUtil、MathUtil、BitStatusUtil等,帮助大家更好地理解和使用这些工具类。

ConcurrentLinkedHashMap
NumberUtil

← ConcurrentLinkedHashMap NumberUtil→

Theme by Vdoing | Copyright © 2025-2026 Hutool | Apache-2.0
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式