BigDecimal大数据类。

目标: BigDecimal大数据类。

  引入:

    浮点型运算的时候直接+ * / 可能会出现数据失真(精度问题)。

    BigDecimal可以解决浮点型运算数据失真的问题。

  BigDicimal类:

    包: java.math.

    创建对象的方式(最好的方式:)

      public static BigDecimal valueOf (double var); 包装浮点数成为大数据对象。

    方法声明:

      public BigDecimal add(BigDecimal value)       加法运算

      public BigDecimal subtract(BigDecimal value)  减法运算

      public BigDecimal multiply(BigDecimal value)   乘法运算

      public BigDecimal divide(BigDecimal value)    除法运算

      public double doubleValue()   把BigDecimal类型转换成double类型

 

案例: 

package com.ithei.BigDecimal;

import java.math.BigDecimal;

/**
 * @program: javaDemo01->BigDecimalTest
 * @description: 测试BigDecimal
 * @author: 安生
 * @create: 2021-01-24 00:00
 **/
public class BigDecimalTest {
    public static void main(String[] args) {

        System.out.println(0.1+0.2); //发现出现失真了  0.30000000000000004
        //这里使用 BigDecimal 里的东西
        // 最好的使用方法 BigDecimal.valueOf(double var);
        double a = 0.1;
        double b = 0.2;
        BigDecimal a1 = BigDecimal.valueOf(a);
        BigDecimal b1 = BigDecimal.valueOf(b);

        //public BigDecimal add(BigDecimal value)       加法运算
        BigDecimal c = a1.add(b1);
        System.out.println("加法:"+c); //这里应该是输出对象的 但是结果如果不是 那说明了重写了toString方法

        //public BigDecimal subtract(BigDecimal value)  减法运算
        BigDecimal c1 = b1.subtract(a1);
        System.out.println("减法:"+c1);

        //public BigDecimal multiply(BigDecimal value)   乘法运算
        BigDecimal c2 = a1.multiply(b1);
        System.out.println("乘法:"+c2);

        //public BigDecimal divide(BigDecimal value)    除法运算
        BigDecimal c3 = b1.divide(a1);
        System.out.println("除法:"+c3);


    }
}

 

所以这里要补充一下  最后不是这样就完了  因为BigDecimal只是我们解决精度问题的手段,double数据才是我们的目的!!!

最后的结果要再进行 以下的操作:  把BigDecimal类型通过.doubleValue()转换成double类型 这样才是最终操作!!!

 

运行结果:

 

原文地址:https://www.cnblogs.com/bichen-01/p/14319629.html