常用API(3):Math、System、BigDecimal

82 阅读2分钟

常用API(3):Math、System、BigDecimal

1、Math

包含执行基本数字运算的方法,Math类没有提供公开的构造器。
使用方法为看类的成员是否都是静态的,如果是,通过类名就可以直接调用。

public static int abs(int a) 获取参数绝对值

public static double ceil(double a) 向上取整

public stitic double floor(double a) 向下取整

public static int round(float a) 四舍五入

public static int max(int a,int b) 获取两个int值中的较大值

public static double pow(double a,double b) 返回a的b次幂的值

public static double random()返回值为double的随机值,范围[0.0,1.0)

2、System

System的功能是通用的,都是直接用类名调用即可,所以System不能被实例化。

public static void exit(int status) 终止当前运行的Java虚拟机,非零表示异常终止

public static long currentTimeMillis() 返回当前系统的时间毫秒值形式

public static void arraycopy(数据源数组,起始索引,目的地数组,起始索引,拷贝个数)数组拷贝 代码展示如下 :

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

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

        //3、数组拷贝
        /**
         arraycopy(Object src,  int  srcPos,
         Object dest, int destPos,
         int length);
         参数一:被拷贝的数组
         参数二:从哪个索引位置开始拷贝
         参数三:复制的目标数组
         参数四:粘贴位置
         参数五:拷贝元素的个数
         */
        int[] arr1 = {10, 20, 30, 40, 50, 60, 70};
        int[] arr2 = new int[6];//[0, 0, 0, 0, 0, 0] ==> [0, 0, 40, 50, 60, 0]
        System.arraycopy(arr1,3,arr2,2,3);
        System.out.println(Arrays.toString(arr2));//[0, 0, 40, 50, 60, 0]

3、BigDecimal

用于解决浮点运算精度失真的问题 。

使用步骤:创建 对象BigDecimal封装浮点型数据(最好的方法是调用方法) 。

public static BigDecimal valueOf(double val)包装浮点数成为BigDecimal对象

常用API :

public BigDecimal add(BigDecimal b) 加法

public BigDecimal subtract(BigDecimal b) 减法

public BigDecimal multiply(BigDecimal b) 乘法

public BigDecimal divide(BigDecimal b) 除法

public BigDecimal divide(另一个BigDecimal对象,精确几位,舍入模式)除法
代码展示如下:

double a = 0.1;
double b = 0.2;
double c = a + b;
System.out.println(c);//结果:0.30000000000000004
//包装浮点型数据成为大数据对象BigDecimal
BigDecimal a1 = BigDecimal.valueOf(a);
BigDecimal b1 = BigDecimal.valueOf(b);
BigDecimal c1 = a1.add(b1);//加法运算
System.out.println(c1);//结果:0.3

注意:BigDecimal是一定要精度运算的,否则会报错。