Java中Math工具类提供了一些+,-,*,/和%等基本运算符不能完成的更复杂的数学运算,例如,三角函数,对数运算,指数运算等。提供了基本的数学操作,如指数,对数,平方根和三角函数等。Math类位于java.lang包,它的构造方法是private的,因此无法创建Math类的对象,并且Math类中的所有方法都是static静态方法,可以直接通过类名来调用它们。

public static void main(String[] args){
    double pi = Math.PI;//圆周率
    System.out.println("圆周率:"+pi);
    //======================================================
    double e = Math.E;//E的常量
    System.out.println("E的常量:"+e);
    //======================================================
    float abs = Math.abs(-1.0f);//绝对值
    System.out.println("绝对值:"+abs);
    //======================================================
    double sin = Math.sin(2 * Math.PI/360 * 90);//正弦,传值为弧度,弧度的计算公式为: 2*PI/360*角度
    System.out.println("正弦:"+sin);
    double asin = Math.asin(sin);//反正弦,传值范围是[-1,1],返回值是弧度
    System.out.println("反正弦:"+asin);
    //双曲正弦Math.sinh(x) = (Math.exp(x)+Math.exp(-x))/2
    double sinh = Math.sinh(0);//双曲正弦
    System.out.println("双曲正弦:"+sinh);
    //======================================================
    double cos = Math.cos(2 * Math.PI/360 * 0);//余弦,传值为弧度,弧度的计算公式为: 2*PI/360*角度
    System.out.println("余弦:"+cos);
    double acos = Math.acos(0.5);//反余弦,传值范围是[-1,1],返回值是弧度
    System.out.println("反余弦:"+acos);
    //双曲余弦Math.cosh(x) = (Math.exp(x)+Math.exp(-x))/2
    double cosh = Math.cosh(0);//双曲余弦
    System.out.println("双曲余弦:"+cosh);
    //======================================================
    //假设直线与X轴正方向角度为45度,求斜率
    double tan = Math.tan(2 * Math.PI/360 * 45);//正切,已知角度或者弧度,求斜率
    System.out.println("正切:"+tan);

    //假设有两个点:(0,0),(Math.sqrt(3),1),求斜率
    //斜率 = (y1-y2)/(x1-x2)= (Math.sqrt(3) - 0)/(1 - 0)=Math.sqrt(3)
    double atan = Math.atan(Math.sqrt(3));//反正切,传值为斜率,返回值为弧度
    System.out.println("反正切:"+atan);
    double atan2 = Math.atan2(Math.sqrt(3) - 0, 1 - 0);//反正切,传值为两点之差(第一个参数:y2-y1,第二个参数x2-x1),返回值为弧度
    System.out.println("反正切:"+atan2);
    //======================================================
    double degress = Math.toDegrees(2 * Math.PI/360 * 90);//弧度转角度
    System.out.println("弧度转角度:"+degress);
    double radians = Math.toRadians(degress);//角度转弧度
    System.out.println("角度转弧度:"+radians);
    //======================================================
    double ceil = Math.ceil(10.2);//不小于某数的最小整数(进一法)
    System.out.println("不小于某数的最小整数(进一法):"+ceil);
    double floor = Math.floor(10.8);//不大于某数的最大整数(退一法)
    System.out.println("不大于某数的最大整数(退一法):"+floor);
    double round1 = Math.round(10.2);//四舍五入1
    double round2 = Math.round(10.5);//四舍五入2
    System.out.println("四舍五入1:"+round1);
    System.out.println("四舍五入2:"+round2);
    double rint = Math.rint(10.5);//距离某数最近的整数
    System.out.println("距离某数最近的整数:"+rint);
    //======================================================
    double exp = Math.exp(1);//E的任意次方
    System.out.println("E的任意次方:"+exp);
    //======================================================
    double log10 = Math.log10(10);//以10为底的对数
    System.out.println("以10为底的对数:"+log10);
    double log = Math.log(e);//自然对数,就是所谓的ln,以E为底的对数
    System.out.println("自然对数:"+log);
    //======================================================
    double random = Math.random();//[0,1)区间内的随机数
    System.out.println("随机数:"+random);
    //======================================================
    double ieeeremainder1 = Math.IEEEremainder(8, 3);//取余
    System.out.println("取余1:"+ieeeremainder1);
    double ieeeremainder2 = getIEEERemainder(8, 3);//取余
    System.out.println("取余2:"+ieeeremainder2);
    double modulus1 = getModulus(8, 3);//取模
    System.out.println("取模1:"+modulus1);
    double modulus2 = 8 % 3;//取模
    System.out.println("取模2:"+modulus2);
    //======================================================
    double max = Math.max(1, 1.1);
    System.out.println("最大数:"+max);
    double min = Math.min(1, 1.1);
    System.out.println("最小数:"+min);
    //======================================================
    double sqrt = Math.sqrt(4);//开平方根
    System.out.println("开平方根:"+sqrt);
    double cbrt = Math.cbrt(8);
    System.out.println("开立方根:"+cbrt);
    //======================================================
    double pow = Math.pow(2,3);//某数的任意次方
    System.out.println("某数的任意次方:"+pow);
    //======================================================
    double nextDown = Math.nextDown(1.1);
    System.out.println("比某数小0.00...001:"+nextDown);
    double nextUp = Math.nextUp(1.1);
    System.out.println("比某数大0.00...001:"+nextUp);
    //======================================================
    double addExact = Math.addExact(1, 3);//加法运算
    System.out.println("加法运算:"+addExact);
    double subtractExact = Math.subtractExact(1, 3);//减法运算
    System.out.println("减法运算:"+subtractExact);
    double multiplyExact = Math.multiplyExact(1, 3);//乘法运算
    System.out.println("乘法运算:"+multiplyExact);
    //======================================================
    //copySign(magnitude,sign) 用sign的符号替代magnitude的符号
    double copySign = Math.copySign(-2, 1.1);
    System.out.println("替换符号之后的值:"+copySign);
    //======================================================
    double expm1 = Math.expm1(0);//相当于Math.exp(0) - 1
    System.out.println("expm1:"+expm1);
    //======================================================
    //x = Math.getExponent(y)相当于y = Math.pow(2, x)
    double exponent = Math.getExponent(1);//无偏差指数
    //    如果参数为NaN或无穷大,那么结果是Float.MAX_EXPONENT+1。
    //    如果参数是零或小于正常值,那么结果是Float.MIN_EXPONENT-1。
    System.out.println("无偏差指数:"+exponent);
    //======================================================
    double hypot = Math.hypot(Math.sqrt(2), Math.sqrt(2));//返回所有平方和的平方根
    System.out.println("平方和的平方根:"+hypot);
    //======================================================
    double floorDiv = Math.floorDiv(9, 2);//返回等于或小于代数商的最大整数值
    System.out.println("返回等于或小于代数商的最大整数值:"+floorDiv);
    //======================================================
    double floorMod = Math.floorMod(8, 3);//返回余数
    System.out.println("返回余数:"+floorMod);
    //======================================================
    double loglp = Math.log1p(e-1);// 函数返回一个数字加1后的自然对数 (底为 E), 既log(x+1).
    System.out.println(" 函数返回一个数字加1后的自然对数 :"+loglp);
    //======================================================
    double nextAfter = Math.nextAfter(1.1, 1.2);//返回第一个参数和第二个参数之间与第一个参数相邻的浮点数
    System.out.println(" 返回第一个参数和第二个参数之间与第一个参数相邻的浮点数 :"+nextAfter);
    //======================================================
    double scalb = Math.scalb(2, 3);//返回第一个参数乘以2的第二个参数次方
    System.out.println(" 返回第一个参数乘以2的第二个参数次方 :"+scalb);
    //======================================================
    double signum = Math.signum(-2.0);//方法返回参数的符号函数,如果参数为0返回零,如果参数大于零返回1.0,如果参数小于零返回-1.0
    System.out.println(" 参数的符号函数 :"+signum);
    //======================================================
    double ulp = Math.ulp(956.294);//返回参数的ulp大小
    System.out.println(" 返回参数的ulp大小 :"+ulp);
    //======================================================
    double decrementExact = Math.decrementExact(-100);//无溢出运算,具体用法不清楚,演示运行规则发现这个运算的返回值是x-1
    System.out.println(" 无溢出运算1:"+decrementExact);
    double negateExact = Math.negateExact(-1);//返回x乘以负一
    System.out.println(" 无溢出运算2 :"+negateExact);//具体用法不清楚
    double toIntExact = Math.toIntExact(-100);//返回原来的数,具体用法不清楚
    System.out.println(" 无溢出运算3 :"+toIntExact);
    //======================================================
}

运行结果:

圆周率:3.141592653589793
E的常量:2.718281828459045
绝对值:1.0
正弦:1.0
反正弦:1.5707963267948966
双曲正弦:0.0
余弦:1.0 
反余弦:1.0471975511965979
双曲余弦:1.0
正切:0.9999999999999999
反正切:1.0471975511965976
反正切:1.0471975511965976
弧度转角度:90.0
角度转弧度:1.5707963267948966
不小于某数的最小整数(进一法):11.0
不大于某数的最大整数(退一法):10.0
四舍五入1:10.0
四舍五入2:11.0
距离某数最近的整数:10.0
E的任意次方:2.718281828459045
以10为底的对数:1.0
自然对数:1.0
随机数:0.39810529656674576
取余1:-1.0
取余2:-1.0
取模1:1.9787164932467636
取模2:2.0
最大数:1.1
最小数:1.0
开平方根:2.0
开立方根:2.0
某数的任意次方:8.0
比某数小0.00...001:1.0999999999999999
比某数大0.00...001:1.1000000000000003
加法运算:4.0
减法运算:-2.0
乘法运算:3.0
替换符号之后的值:2.0
expm1:0.0
无偏差指数:0.0
平方和的平方根:2.0
返回等于或小于代数商的最大整数值:4.0
返回余数:2.0
函数返回一个数字加1后的自然对数 :1.0
返回第一个参数和第二个参数之间与第一个参数相邻的浮点数 :1.1000000000000003
返回第一个参数乘以2的第二个参数次方 :16.0
参数的符号函数 :-1.0
返回参数的ulp大小 :1.1368683772161603E-13
无溢出运算1:-101.0
无溢出运算2 :1.0
无溢出运算3 :-1000000.0

Process finished with exit code 0
最后修改:2023 年 04 月 06 日 10 : 54 AM
如果觉得此文章有用,请随意打赏