看下面这段代码:
BigDecimal bd1 = new BigDecimal(0.01);
BigDecimal bd2 = BigDecimal.valueOf(0.01);
System.out.println("bd1 = " + bd1);
System.out.println("bd2 = " + bd2);
结果是:
bd1 = 0.01000000000000000020816681711721685132943093776702880859375
bd2 = 0.01
float、double两种基本浮点类型的浮点数容易引起精度丢失。所以在创建BigDecimal对象时最好不要用double类型创建,如果非要用double类型创建,使用BigDecimal.valueOf(double val) 方法。
如果程序中需要对double浮点数进行加、减、乘、除基本运算,则需要先将double类型数值包装成BigDecimal对象,调用BigDecimal对象的方法执行运算后再将结果转换成double型变量。