Java 中 Math 类的常用方法,java.lang.Math 是 Java 提供的数学工具类,包含了大量用于执行基本数学运算的静态方法(无需创建对象,直接通过 Math.方法名() 调用),下面按功能分类讲解核心常用方法:
一、基本算术运算
1. 绝对值:abs()
返回任意数值类型的绝对值,支持 int、long、float、double 四种类型。
// int 类型绝对值
System.out.println(Math.abs(-10)); // 输出:10
// double 类型绝对值
System.out.println(Math.abs(-3.14)); // 输出:3.14
// long 类型绝对值
System.out.println(Math.abs(-10000000000L)); // 输出:10000000000
2. 取整运算
(1)向下取整:floor(double a)
返回小于等于参数 a 的最大整数(向负无穷方向取整),返回值为 double 类型。
System.out.println(Math.floor(3.9)); // 输出:3.0
System.out.println(Math.floor(-3.1)); // 输出:-4.0
(2)向上取整:ceil(double a)
返回大于等于参数 a 的最小整数(向正无穷方向取整),返回值为 double 类型。
System.out.println(Math.ceil(3.1)); // 输出:4.0
System.out.println(Math.ceil(-3.9)); // 输出:-3.0
(3)四舍五入:round()
按 "四舍五入" 规则取整,支持两种类型:
-
long round(double a):对double类型取值,返回long类型结果; -
int round(float a):对float类型取值,返回int类型结果。// double 类型四舍五入
System.out.println(Math.round(3.49)); // 输出:3(long 类型)
System.out.println(Math.round(3.5)); // 输出:4(long 类型)
// float 类型四舍五入
System.out.println(Math.round(2.3f)); // 输出:2(int 类型)
(4)就近取整(银行家舍入法):rint(double a)
返回最接近参数 a 的整数,若存在两个等距整数,返回偶数,返回值为 double 类型。
System.out.println(Math.rint(3.5)); // 输出:4.0(与 3 和 4 等距,返回偶数 4)
System.out.println(Math.rint(4.5)); // 输出:4.0(与 4 和 5 等距,返回偶数 4)
System.out.println(Math.rint(3.2)); // 输出:3.0
3. 取余运算:IEEEremainder(double f1, double f2)
返回两个 double 类型数值的余数(遵循 IEEE 754 标准,与 % 运算符略有差异,通常场景下 % 更常用)。
System.out.println(Math.IEEEremainder(10, 3)); // 输出:1.0
System.out.println(Math.IEEEremainder(10, -3)); // 输出:1.0
二、数值比较与极值
1. 最大值:max()
返回两个同类型数值中的较大值,支持 int、long、float、double 四种类型。
System.out.println(Math.max(10, 20)); // 输出:20(int 类型)
System.out.println(Math.max(3.14, 2.71)); // 输出:3.14(double 类型)
2. 最小值:min()
返回两个同类型数值中的较小值,支持 int、long、float、double 四种类型。
System.out.println(Math.min(10, 20)); // 输出:10(int 类型)
System.out.println(Math.min(3.14, 2.71)); // 输出:2.71(double 类型)
3. 限制数值范围(JDK 1.8+):clamp()
将数值限制在 min 和 max 之间,若数值小于 min 返回 min,大于 max 返回 max,否则返回自身,支持 int、long、float、double 四种类型。
System.out.println(Math.clamp(15, 10, 20)); // 输出:15(在范围内,返回自身)
System.out.println(Math.clamp(5, 10, 20)); // 输出:10(小于最小值,返回 min)
System.out.println(Math.clamp(25, 10, 20)); // 输出:20(大于最大值,返回 max)
三、幂运算与指数 / 对数运算
1. 幂运算:pow(double a, double b)
返回 a 的 b 次方(a^b),两个参数均为 double 类型,返回值为 double 类型。
System.out.println(Math.pow(2, 3)); // 输出:8.0(2的3次方)
System.out.println(Math.pow(10, 2)); // 输出:100.0(10的平方)
System.out.println(Math.pow(4, 0.5)); // 输出:2.0(4的平方根,等价于 sqrt(4))
2. 平方根:sqrt(double a)
返回参数 a 的算术平方根(仅支持非负数值,负数返回 NaN),返回值为 double 类型。
System.out.println(Math.sqrt(16)); // 输出:4.0
System.out.println(Math.sqrt(2)); // 输出:1.4142135623730951
System.out.println(Math.sqrt(-1)); // 输出:NaN(非数字)
3. 立方根:cbrt(double a)
返回参数 a 的立方根(支持正负数值),返回值为 double 类型。
System.out.println(Math.cbrt(8)); // 输出:2.0
System.out.println(Math.cbrt(-8)); // 输出:-2.0
System.out.println(Math.cbrt(27)); // 输出:3.0
4. 自然指数(e^x):exp(double a)
返回自然常数 e(约 2.71828)的 a 次方,返回值为 double 类型。
System.out.println(Math.exp(1)); // 输出:2.718281828459045(e^1)
System.out.println(Math.exp(2)); // 输出:7.38905609893065(e^2)
5. 对数运算
(1)自然对数(ln x):log(double a)
返回参数 a 的自然对数(以 e 为底),仅支持正数值,返回值为 double 类型。
System.out.println(Math.log(Math.E)); // 输出:1.0(ln e = 1)
System.out.println(Math.log(10)); // 输出:2.302585092994046
(2)常用对数(log10 x):log10(double a)
返回参数 a 的常用对数(以 10 为底),仅支持正数值,返回值为 double 类型。
System.out.println(Math.log10(10)); // 输出:1.0
System.out.println(Math.log10(100)); // 输出:2.0
四、三角函数与反三角函数
1. 基础三角函数(参数为弧度值)
-
sin(double a):正弦函数 -
cos(double a):余弦函数 -
tan(double a):正切函数// 30度对应的弧度值:Math.PI / 6
System.out.println(Math.sin(Math.PI / 6)); // 输出:0.5(正弦30度)
// 60度对应的弧度值:Math.PI / 3
System.out.println(Math.cos(Math.PI / 3)); // 输出:0.5(余弦60度)
// 45度对应的弧度值:Math.PI / 4
System.out.println(Math.tan(Math.PI / 4)); // 输出:1.0(正切45度)
2. 反三角函数(返回值为弧度值)
-
asin(double a):反正弦函数(返回值范围:[-π/2, π/2]) -
acos(double a):反余弦函数(返回值范围:[0, π]) -
atan(double a):反正切函数(返回值范围:[-π/2, π/2])System.out.println(Math.asin(0.5)); // 输出:0.5235987755982988(对应30度,即π/6)
System.out.println(Math.acos(0.5)); // 输出:1.0471975511965976(对应60度,即π/3)
System.out.println(Math.atan(1.0)); // 输出:0.7853981633974483(对应45度,即π/4)
3. 角度与弧度转换
-
toRadians(double angdeg):角度转换为弧度 -
toDegrees(double angrad):弧度转换为角度// 角度转弧度
System.out.println(Math.toRadians(30)); // 输出:0.5235987755982988(π/6)
// 弧度转角度
System.out.println(Math.toDegrees(Math.PI / 4)); // 输出:45.0
五、随机数生成
1. 基础随机数:random()
返回一个 [0.0, 1.0) 区间内的随机 double 类型数值(包含 0.0,不包含 1.0)。
// 生成 10 个 [0.0, 1.0) 随机数
for (int i = 0; i < 10; i++) {
System.out.println(Math.random());
}
// 生成 [min, max) 区间的随机整数(示例:[1, 100))
int min = 1;
int max = 100;
int randomInt = (int) (Math.random() * (max - min) + min);
System.out.println("1到99的随机整数:" + randomInt);
// 生成 [min, max] 区间的随机整数(示例:[1, 100])
int randomInt2 = (int) (Math.random() * (max - min + 1) + min);
System.out.println("1到100的随机整数:" + randomInt2);
六、常量与其他常用方法
1. 常用数学常量
-
Math.PI:圆周率(π),约等于 3.141592653589793 -
Math.E:自然常数(e),约等于 2.718281828459045System.out.println("圆周率:" + Math.PI);
System.out.println("自然常数:" + Math.E);
2. 符号函数:signum(double a)
返回数值的符号:正数返回 1.0,负数返回 -1.0,0 返回 0.0,支持 double 和 float 类型。
System.out.println(Math.signum(10.5)); // 输出:1.0
System.out.println(Math.signum(-3.2)); // 输出:-1.0
System.out.println(Math.signum(0)); // 输出:0.0
3. 绝对值与符号结合:copySign(double magnitude, double sign)
返回第一个参数的绝对值,并带有第二个参数的符号,支持 double 和 float 类型。
// 10.5 取绝对值,带上 -3.2 的符号(负号)
System.out.println(Math.copySign(10.5, -3.2)); // 输出:-10.5
// -3.2 取绝对值,带上 10.5 的符号(正号)
System.out.println(Math.copySign(-3.2, 10.5)); // 输出:3.2
七、完整使用示例
public class MathDemo {
public static void main(String[] args) {
// 1. 基本算术运算
System.out.println("绝对值:" + Math.abs(-15));
System.out.println("向下取整:" + Math.floor(4.7));
System.out.println("向上取整:" + Math.ceil(4.2));
System.out.println("四舍五入:" + Math.round(4.5));
// 2. 极值运算
System.out.println("最大值:" + Math.max(20, 30));
System.out.println("最小值:" + Math.min(20, 30));
System.out.println("范围限制:" + Math.clamp(25, 10, 20));
// 3. 幂运算与对数运算
System.out.println("2的4次方:" + Math.pow(2, 4));
System.out.println("16的平方根:" + Math.sqrt(16));
System.out.println("8的立方根:" + Math.cbrt(8));
System.out.println("以10为底100的对数:" + Math.log10(100));
// 4. 三角函数(角度转弧度)
double radian = Math.toRadians(60);
System.out.println("60度的正弦值:" + Math.sin(radian));
System.out.println("60度的余弦值:" + Math.cos(radian));
// 5. 随机数
int randomNum = (int) (Math.random() * 100 + 1);
System.out.println("1到100的随机整数:" + randomNum);
// 6. 常量
System.out.println("圆周率:" + Math.PI);
System.out.println("自然常数:" + Math.E);
}
}
八、核心总结
Math类是静态工具类 ,所有方法均为静态方法,直接通过Math.方法名()调用;- 核心功能分类:算术运算(abs/floor/ceil/round)、极值运算(max/min/clamp)、幂 / 指数 / 对数运算(pow/sqrt/log)、三角函数、随机数(random);
- 注意事项:三角函数参数为弧度值 ,需通过
toRadians()/toDegrees()进行角度与弧度转换;random()生成[0.0,1.0)随机数,需手动转换为指定区间的整数; - 适用场景:数值计算、数据处理、随机数生成、几何运算等需要数学计算的场景。
