目标: 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类型 这样才是最终操作!!!
运行结果: