MathUtils
本文介绍Java标准库Math类和Apache Commons Math的MathUtils。
Java标准库Math类
概述
java.lang.Math是Java核心数学工具类,提供基本数学运算。
核心特点
- 静态方法,无需创建对象
- 位于java.lang包,自动导入
- 常用数学运算:三角、指数、对数、取整等
基本运算
abs绝对值
Java
Math.abs(-5); // 5
Math.abs(-3.14); // 3.14
Math.abs(0); // 0
max/min最大最小值
Java
Math.max(10, 20); // 20
Math.max(3.5, 2.8); // 3.5
Math.min(10, 20); // 10
Math.min(3.5, 2.8); // 2.8
// 多个值比较
int maxValue = Math.max(Math.max(1, 2), 3); // 3
指数与对数
pow幂运算
Java
Math.pow(2, 3); // 8.0(2的3次方)
Math.pow(10, 2); // 100.0
Math.pow(5, 0); // 1.0
sqrt平方根
Java
Math.sqrt(9); // 3.0
Math.sqrt(16); // 4.0
Math.sqrt(2); // 1.41421356...
log对数
Java
Math.log(10); // 2.302...(自然对数ln)
Math.log10(100); // 2.0(以10为底)
Math.log2(8); // 3.0(以2为底,Java 9+)
exp指数
Java
Math.exp(1); // 2.718...(e的1次方)
Math.exp(0); // 1.0
取整方法
round四舍五入
Java
Math.round(3.4); // 3
Math.round(3.5); // 4
Math.round(3.6); // 4
Math.round(-3.5); // -3(负数向正无穷方向)
floor向下取整
Java
Math.floor(3.7); // 3.0
Math.floor(3.1); // 3.0
Math.floor(-3.1); // -4.0
ceil向上取整
Java
Math.ceil(3.1); // 4.0
Math.ceil(3.7); // 4.0
Math.ceil(-3.1); // -3.0
| 方法 | 3.4结果 | 3.5结果 | 3.6结果 |
|---|---|---|---|
| round | 3 | 4 | 4 |
| floor | 3.0 | 3.0 | 3.0 |
| ceil | 4.0 | 4.0 | 4.0 |
三角函数
sin/cos/tan
Java
Math.sin(Math.PI / 2); // 1.0(sin 90°)
Math.cos(0); // 1.0(cos 0°)
Math.tan(Math.PI / 4); // 1.0(tan 45°)
// 参数是弧度,角度转弧度:angle * PI / 180
double radians = 90 * Math.PI / 180;
Math.sin(radians); // 1.0
toRadians/toDegrees转换
Java
Math.toRadians(180); // π(角度→弧度)
Math.toDegrees(Math.PI); // 180.0(弧度→角度)
随机数
random随机数
Java
Math.random(); // [0.0, 1.0)随机double
// 生成0-9随机整数
int rand = (int)(Math.random() * 10);
// 生成1-100随机整数
int rand = (int)(Math.random() * 100) + 1;
常量
PI和E
Java
Math.PI; // 3.141592653589793
Math.E; // 2.718281828459045
Apache Commons Math
MathUtils概述
Apache Commons Math库提供更丰富的数学工具。
依赖引入
XML
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-math3</artifactId>
<version>3.6.1</version>
</dependency>
常用方法
Java
// 判断是否为数字
ArithmeticUtils.isPowerOfTwo(8); // true(是否是2的幂)
// 最大公约数
ArithmeticUtils.gcd(12, 8); // 4
// 最小公倍数
ArithmeticUtils.lcm(4, 6); // 12
// 组合数(n选k)
ArithmeticUtils.binomialCoefficient(5, 2); // 10
要点总结
- Math是java.lang包的核心数学类
- abs绝对值,max/min比较大小
- pow幂运算,sqrt平方根
- log/log10对数,exp自然指数
- round四舍五入,floor/ceil取整
- sin/cos/tan三角函数(参数弧度)
- random生成[0,1)随机数
- Math.PI和Math.E常量
- Commons Math提供更丰富的数学运算
📝 发现内容有误?点击此处直接编辑