bigdecimal构造器需要传入字符串类型.传double会有精度问题.
同样的,sout默认输出数字也是double类型
package corejava; import java.math.BigDecimal; public class test { public static void main(String[] args) { double a = 2.0; double b = 1.1; System.out.println(a - b);// float c = 2.0f; float d = 1.1f; System.out.println(c - d);// 0.9 System.out.println(BigDecimal.valueOf(2.0 - 1.1));// BigDecimal bigDecimal1 = new BigDecimal("2.0"); BigDecimal bigDecimal2 = new BigDecimal("1.1"); BigDecimal subtract = bigDecimal1.subtract(bigDecimal2); System.out.println(subtract);// 0.9 } }
运行结果如下:
0.8999999999999999
0.9
0.8999999999999999
0.9