1科学计算:有一点误差可以接受,用浮点类型
doublea=0.6;
doubleb=0.06;
print(a+b)
结果是:0.60600000001 不精确,因为计算机只有01数值,无法精确表示!!
2精确运算:用于数量大的货币运算操作等,可以用BigDecimal类:提供了加减乘除运算
可以实现精确运算!!传入数字的字符串形式就好!
BigDecimala=new BigDecimal(“0.1”);
BigDecimalb=new BigDecimal(“0.006”);
BigDecimalc=a.add(b); a+b
print(c.toString());
而且可以实现任意的精度运算小数点后面位数或者整数位也可以<无限长!!!无限制,实现任意精度小数
BigDecimalc=a.multiply(b); a*b
BigDecimalc=a.divide(b); a/b 会报错,因为无法整除,就会无限长,会出错!!应当告诉他保留的小数范围以及舍入模式:碰到一半怎么处理!!
BigDecimalc=a.divide(b,10,BigDecimal.ROUND_HALF_UP); a/b
保留小数点后10位,碰到一半怎么处理, 遇到0.5 向上舍入是成1,向下舍入是成0 ROUND_HALF_UP
|