java核心技术卷一 第33页
警告:
浮点数值不适用于禁止出现舍入误差的金融计算中。
例如:命令 System.out.println(2.0-1.1); 将打印出 0.89999999999999999999999999999 ,而不是人们想象的0.9。
其主要原因是浮点数值采用二进制系统表示,而在二进制系统中无法精确的表示分数1/10。这就好像十进制无法精确地表示1/3一样。
如果需要在数值计算中不含有任何舍入误差,就应该使用 BigDecimal 类。
java核心技术卷一 第33页
警告:
浮点数值不适用于禁止出现舍入误差的金融计算中。
例如:命令 System.out.println(2.0-1.1); 将打印出 0.89999999999999999999999999999 ,而不是人们想象的0.9。
其主要原因是浮点数值采用二进制系统表示,而在二进制系统中无法精确的表示分数1/10。这就好像十进制无法精确地表示1/3一样。
如果需要在数值计算中不含有任何舍入误差,就应该使用 BigDecimal 类。