Java 入门 30 常用API Math 类 System类 BigDecima类(解决精度失真的问题)

package com.ITheima.API_Object;

public class Test6 {
    public static void main(String[] args) {
        //1 Math.abs(num) 去绝对值 返回整数
        System.out.println(Math.abs(1));
        System.out.println(Math.abs(-1));

        //2 Math.ceil(num) 向上取整
        System.out.println(Math.ceil(1.2));//2.0
        System.out.println(Math.ceil(1.8));//2.0

        //3 Math.floor(num) 向下取整
        System.out.println(Math.floor(1.3));//1.0
        System.out.println(Math.floor(1.9));//1.0

        //4  Math.pow(num1,num2)求指数次方
        System.out.println(Math.pow(2, 3));//8.0
        System.out.println(Math.pow(2, 4));//16.0

        //5 Math.round(num)四舍五入
        System.out.println(Math.round(4.888));//5
        System.out.println(Math.round(4.33388));//4

        //6 Math.random()
        //求3-9之间的随机数 减加
        System.out.println((Math.random()*7 + 3));


    }
}
View Code

 

 

 

package com.ITheima.API_Object;

import java.lang.reflect.Array;
import java.util.Arrays;

public class Test7 {
    public static void main(String[] args) {
        System.out.println("程序开始");

        //System.exit(0);//JVM终止!

        //2 计算机认为 时间有起源:返回1970-1-1:00:00:00 走到此刻的总的毫秒值:时间毫秒值
        long time=System.currentTimeMillis();
        System.out.println(time);

        //3 做数组拷贝(了解)
        /**
         * System.array()
         * 参数1:被拷贝的数组
         * 参数2:从那个索引位子开始拷贝
         * 参数3:复制的目标数组
         * 参数4:粘贴位子
         * 参数5:拷贝元素的个数
         */
        int [] arr1={1,2,3,4,5,6,7,8,9};
        int [] arr2=new int[6];//[0,0,0,0,0,0]  ==>[0,0,6,7,8,9]
        System.arraycopy(arr1,5,arr2,3,3);
        System.out.println(Arrays.toString(arr2));


        System.out.println("程序结束");
    }
}
View Code

BigDecimal

 

 

 

 

package com.ITheima.API_Object;

import java.math.BigDecimal;
import java.math.RoundingMode;

public class Test8 {
    public static void main(String[] args) {
        //浮点型运算的时候直接使用+ * / 可能会出现数据失真(精度问题)
        System.out.println(0.09 + 0.01);//0.09999999999999999
        System.out.println(1.0 - 0.32);//0.6799999999999999
        System.out.println(1.015 * 100);//101.49999999999999
        System.out.println(1.301 / 100);//0.013009999999999999


        System.out.println("-----------------------------------");
        double a = 0.1;
        double b = 0.2;
        double c = a + b;
        System.out.println(c);//0.30000000000000004
        System.out.println("----------------");

        //包装成浮点类型数据成为大数据对象 BigDecimal
        BigDecimal a1 = BigDecimal.valueOf(a);
        BigDecimal b1 = BigDecimal.valueOf(b);
        //+ add()
        //BigDecimal c1=a1.add(b1);
        //System.out.println(c1);//0.3
        //- subtract
        //BigDecimal c1=a1.subtract(b1);
        //System.out.println(c1);//-0.1
        //* multiply
        //BigDecimal c1=a1.multiply(b1);
        //System.out.println(c1);//0.02
        // /   divide()
        BigDecimal c1=a1.divide(b1);
        System.out.println(c1);//0.5

        //BigDecimal 解决精度问题只是手段   目的最后还要转换成double类型
        double rs=c1.doubleValue();
        System.out.println(rs);//0.5

        //注意事项:BigDecimal是一定要精度运算的
        BigDecimal a11=BigDecimal.valueOf(10.0);
        BigDecimal a12=BigDecimal.valueOf(3.0);
        /**
         * a11.divide(a12,2, RoundingMode.HALF_UP)
         * 参数1 :除数  参数2 保留小数位数 参数三 舍入模式
         */
        BigDecimal a13=a11.divide(a12,2, RoundingMode.HALF_UP);
        System.out.println(a13);
        System.out.println("-----------------------");
    }
}
View Code

 

posted @ 2022-06-28 14:14  还有什么值得拥有  阅读(34)  评论(0编辑  收藏  举报