BigDecimal
---恢复内容开始---
ava在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal。BigDecimal所创建的是对象,我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。方法中的参数也必须是BigDecimal的对象。构造器是类的特殊方法,专门用来创建对象,特别是带有参数的对象。
public static void main(String[] args) {
// 精度测试
double d1 = 0.01, d2 = 0.06, d3;
d3 = d1 + d2;
System.out.println(d3);
d1 = 0.7;
System.out.println(d1 + d1 + d1); // 应该是2.1
BigDecimal bigDecimal = new BigDecimal(0.7);
BigDecimal value = new BigDecimal(Double.valueOf(d1).toString());
System.out.println("数字形式的输出:" + bigDecimal);
System.out.println("字符形式的输出:" + value);
}
由输出的结果我们可以看到使用数字类型的构造已经失真了,所以最好还是采用字符构造
用String初始化Decimal,这样是精确的小数
---恢复内容结束---