Java 中的 Math 方法
1. 常量
// 自然数 e
System.out.println("自然对数: " + Math.E);
// 圆周率 PI
System.out.println("圆周率: " + Math.PI);
2. 随机数
// 随机数
System.out.println("0 到 1 的随机数" + Math.random());
3. 最值
// 取两个数的最大值
System.out.println("最大值: " + Math.max(1, 2));
// 取两个数的最最小值
System.out.println("最小值: " + Math.min(1, 2));
4. 和三角函数有关
// 转化为角度
System.out.println("圆周率转化为角度: " + Math.toDegrees(Math.PI));
// 转化为弧度
System.out.println("180 度转化为弧度 " + Math.toRadians(180));
// 求 sin 值
System.out.println("sin 0 = " + Math.sin(0));
// 求 双曲正弦 值
System.out.println("sinh 0 = " + Math.sinh(0));
// 求 asin 值 (单位为弧度)
System.out.println("asin 1 = " + Math.toDegrees(Math.asin(1)));
// 求 cos 值
System.out.println("cos 0 = " + Math.cos(0));
// 求 双曲余弦 值
System.out.println("cosh 0 = " + Math.cosh(0));
// 求 acos 值 (单位为弧度)
System.out.println("acos 0 = " + Math.toDegrees(Math.acos(0)));
// 求 tan 值
System.out.println("tan PI/2 = " + Math.tan(Math.PI / 2));
// 求 双曲正切 值
System.out.println("tanh 0 = " + Math.tanh(0));
// 求 atan 值 (单位为弧度)
System.out.println("atan 1 = " + Math.toDegrees(Math.atan(1)));
// 正切值为两个指定数字的商的角度
System.out.println("atan2(e, e) = " + Math.toDegrees(Math.atan2(Math.E, Math.E)));
5. 和对数函数有关
// 自然对数
System.out.println("ln e = " + Math.log(Math.E));
// 自然对数 中 (x + 1)
System.out.println("ln 0 = " + Math.log1p(0));
// 以 10 为底对数
System.out.println("log 10 = " + Math.log10(10));
6. 和指数以及幂函数有关
// e 为底的次方
System.out.println("e 的 1 次方: " + Math.exp(1));
// e 为底的次方减去 1
System.out.println("e 的 1 次方 - 1: " + Math.expm1(0));
// 返回 float 或 double 的无偏指数
System.out.println(Math.getExponent(1.0));
// (第一个数) 的 (第二个数) 次方
System.out.println("2 的 3 次方: " + Math.pow(2, 3));
// 两个数的平方和的平方根, 没有中间溢出或下溢
System.out.println("(3 * 3 + 4 * 4) 的平方根: " + Math.hypot(3, 4));
// 返回 第一个数乘以 2 的第二个数的次方
System.out.println("4 * 2 的 3 次方: " + Math.scalb(4, 3));
// 平方根
System.out.println("4 的平方根: " + Math.sqrt(4));
// 立方根
System.out.println("27 的立方根: " + Math.cbrt(27));
7. 与有等于有关
// 四舍五入
System.out.println("2.5 四舍五入: " + Math.round(2.5));
// 四舍五入, 如果有 2 个数同样接近,则返回偶数的那个
System.out.println("2.5 不同于数学的四舍五入: " + Math.rint(2.5));
// 返回相邻的第一个参数的浮点数 (朝着第二个参数的方向)
System.out.println("向 3 方向临近于 1 的数: " + Math.nextAfter(1, 3));
// 负方向基本上无限接近于该数
System.out.println("负方向接近于 3: " + Math.nextDown(3));
// 正方向基本上无限接近于该数
System.out.println("正方向接近于 3: " + Math.nextUp(3));
// 向上取整
System.out.println("1.1 向上取整: " + Math.ceil(1.1));
// 向下取整
System.out.println("1.7 向下取整: " + Math.floor(1.7));
// 第一个数除以第二个数结果向下取整
System.out.println("3 / 2 向下取整: " + Math.floorDiv(3, 2));
// 模运算 相当于 x - (floorDiv(x, y) * y)
System.out.println("3 - (1 * 2) = " + Math.floorMod(3, 2));
8. 符号有关
// 绝对值
System.out.println("-11.5 得绝对值: " + Math.abs(-11.5));
// 相反数
System.out.println("1 的相反数: " + Math.negateExact(1));
// 参数的符号函数; 零返回零; 参数大于零返回 1.0; 参数小于零返回 -1.0
System.out.println("3 的符号: " + Math.signum(3));
9. 加减法有关
// 两个值相加
System.out.println("2 + 5 = " + Math.addExact(2, 5));
// 两个数相减
System.out.println("3 - 1 =" + Math.subtractExact(3, 1));
// 返回的参数值减 1
System.out.println("2 - 1 = " + Math.decrementExact(2));
// 返回值参数值加 1
System.out.println("0 + 1 = " + Math.incrementExact(0));
// 返回来两个数相乘
System.out.println("1 * 3 = " + Math.multiplyExact(1, 3));
// 返回两个参数的确切乘积
System.out.println("1 * 3 = " + Math.multiplyFull(1, 3));
// 返回长度是两个 64 位参数的 128 位乘积的最高有效 64 位
System.out.println(Math.multiplyHigh(100000, 300000));
// 符号拷贝 第一数的符号跟随于第二数的符号
System.out.println("1 的符号变成 -2 的符号: " + Math.copySign(1, -2));
// 第一个数乘以第二个数加上第三个数
System.out.println("3 * 5 + 5 = " + Math.fma(3, 5, 5));
// IEEE 754 标准的两个参数的余数运算, dividend - (divisor * Math.Round(dividend / divisor))
System.out.println("5 - (3 * 2) = " + Math.IEEEremainder(5, 3));
10. 转型有关
// 转化为 int 值返回
System.out.println(Math.toIntExact(3));
// 要返回其 ulp 的浮点值
System.out.println(Math.ulp(3));
详细过程可以参考: http://www.yiidian.com/ 或者官方.