doulbe操作
double i = 2.00 - 1.10
结果:0.899999999999999
问题:并不是所有的小数都可以用二进制浮点数精确表示。
System.out.printf(" %.2f%n " 2.00-1.10)
浮点数不适合货币运算,因为不能产生精确的结果。
精度:表示一个有限长度的二进制小数。
解决问题:
1.使用整数类型,并以某为单位进行计算。
(200 - 110)
把2.00和1.10都扩大为分;
2.使用BigDecimal
但要是有BigDecimal的(String)构造器,千万不要使用BigDecimal(double).
new BigDecimal("2.00").subtract(new BigDecimal("1.10"))
总结:保证精度时不要使用float和double;使用int,long,BigDecimal