Java Math函数简介

x33g5p2x  于2021-09-18 转载在 Java  
字(4.7k)|赞(0)|评价(0)|浏览(84)

今天小编简单介绍一下Math函数的使用,主要是对数字的各种运算操作,话不多说,直接上代码。

package com.guor.test;

import java.util.Random;
import java.util.stream.IntStream;

public class MathTest {

    private static void test01() {
        System.out.println("计算平方根:"+Math.sqrt(16));//4.0
        System.out.println("计算立方根:"+Math.cbrt(27));//3.0
        System.out.println("计算立方根:"+Math.cbrt(21));//2.7589241763811208
        System.out.println("计算a的b次方:"+Math.pow(2, 3));//8.0
        System.out.println("计算最大值:"+Math.max(26, 19));//26
        System.out.println("计算最小值:"+Math.min(26, 19));//19
        System.out.println("取绝对值:"+Math.abs(23.3));//23.3
        System.out.println("取绝对值:"+Math.abs(-23.3));//23.3
    }
    
    private static void test02() {
        System.out.println("90 度的正弦值:" + Math.sin(Math.PI/2));  //1.0
        System.out.println("0度的余弦值:" + Math.cos(0));  //1.0
        
        System.out.println("反余弦值:"+Math.acos(0.1));//1.4706289056333368
        System.out.println("反余弦值:"+Math.acos(0.5));//1.0471975511965979
        System.out.println("反余弦值:"+Math.acos(0.9));//0.45102681179626236
        System.out.println("反余弦值:"+Math.acos(1));//0.0
        System.out.println("反余弦值:"+Math.acos(1.9));//NaN,大于1,输出 NaN
        
        System.out.println("60度的正切值:" + Math.tan(Math.PI/3));  //1.7320508075688767
        System.out.println("1的反正切值: " + Math.atan(1));  //0.7853981633974483
        System.out.println("π/2的角度值:" + Math.toDegrees(Math.PI/2));  //90.0
        System.out.println(Math.PI); //3.141592653589793
        
        //将角度转换为弧度。
        double x = 45.0;
        double y = 30.0;
        System.out.println("将角度转换为弧度:"+Math.toRadians(x) );//0.7853981633974483
        System.out.println("将角度转换为弧度:"+Math.toRadians(y) );//0.5235987755982988
    }
    
    private static void test03() {
        System.out.println("逢余进一:"+Math.ceil(2.66));//3.0
        System.out.println(Math.ceil(10));
        System.out.println("逢余舍一:"+Math.floor(2.66));//2.0
        System.out.println("逢余舍一:"+Math.floor(2.169));//2.0
        
        //返回小于或等于代数商的最大(最接近正无穷大)int值
        System.out.println(Math.floorDiv(10, 15));//0
        System.out.println(Math.floorDiv(15, 10));//1
        System.out.println(Math.floorDiv(25, 10));//2
        
        //四舍五入,返回double值。注意.5的时候会取偶数
        System.out.println(Math.rint(2.6));//3.0
        System.out.println(Math.rint(2.5));//不是3.0,而是2.0
        System.out.println(Math.rint(2.4));//2.0
        System.out.println(Math.rint(3.5));//4.0
        
        //四舍五入,float时返回int值,double时返回long值
        long round2 = Math.round(2.6);
        int round3 = Math.round(3);
        long round4 = Math.round(2.0);
        System.out.println(Math.round(2.6));//3
        long round = Math.round(2.6);
        System.out.println(Math.round(2.6));//3
    }
    
    private static void test04() {
        // 两数相加,并判断是否溢出
        System.out.println(Math.addExact(1, 2));
        System.out.println(Math.addExact(100, 222));
        System.out.println(Math.addExact(Integer.MAX_VALUE, 0));//2147483647
        //System.out.println(Math.addExact(Integer.MAX_VALUE, 1));//java.lang.ArithmeticException: integer overflow
        
        //从指定的变量中减去1并返回它。
        System.out.println(Math.decrementExact(10));//9
        System.out.println(Math.decrementExact(1088));//1087
        
        System.out.println(Math.multiplyExact(10, 2));//20
        
        //exp() 方法用于返回自然数底数e的参数次方
        System.out.println(Math.exp(2.0));
        System.out.println(Math.exp(2.5));
        System.out.println(Math.exp(2.7));
        System.out.println(Math.exp(-22.7));
    }
    
    private static void test05() {
        //复制第二个参数的符号并将其分配给第一个参数
        System.out.println(Math.copySign(10.2, 2.5));//10.2
        System.out.println(Math.copySign(10.2, -2.5));//-10.2
        System.out.println(Math.copySign(-10.2, 0));//10.2,零的符号是正数?也对
        
        //第二个参数的方向上返回与第一个参数相邻的数字。
        System.out.println(Math.nextAfter(10.2, 2.6));//10.199999999999998
        System.out.println(Math.nextAfter(2.6, 10.2));//2.6000000000000005
        System.out.println(Math.nextAfter(10.2, 10.2));//10.2
        
        System.out.println(Math.nextDown(10.5));//10.499999999999998
        System.out.println(Math.nextUp(10.5));//10.500000000000002
        
        //用于返回参数的符号
        System.out.println(Math.signum(10));//1.0
        System.out.println(Math.signum(0));//0.0
        System.out.println(Math.signum(-10));//-1.0
        
        // 返回整数,如果结果溢出,则去掉符号相加或相减
        System.out.println(Math.toIntExact(499)); //499
        System.out.println(Math.toIntExact(Integer.MAX_VALUE)); //2147483647
        System.out.println(Math.toIntExact(Integer.MAX_VALUE+1)); //-2147483648
        System.out.println(Math.toIntExact(Integer.MAX_VALUE+10)); //-2147483639
        
        System.out.println(Math.toIntExact(Integer.MIN_VALUE));//-2147483648
        System.out.println(Math.toIntExact(Integer.MIN_VALUE+10));//-2147483638
        System.out.println(Math.toIntExact(Integer.MIN_VALUE-10));//2147483638
    }
    
    private static void test06() {
        System.out.println("随机数:" + Math.random());// 0.30900647153462657
        Random random = new Random();
        System.out.println(random.nextInt());// -133596410
        System.out.println(random.nextInt(100));// 54,,,100是边界
        
        //返回下一个伪随机数,它是取自此随机数生成器序列的、在0.0和1.0之间均匀分布的 double值。
        System.out.println(random.nextDouble());//0.14627990739876262
        
        //生成随机字节并将其置于用户提供的 byte 数组中。
        byte[] bytes = new byte[10];
        random.nextBytes(bytes);
    }
    
    public static void main(String[] args) {
        test06();
    }
}

相关文章

热门文章

更多