为什么浮点类型的数值会精度丢失?

在开发过程中,我们经常会发现浮点类型的数值会精度丢失,比如:
System.out.println(2.0 - 1.1)
我们肯定觉得应该输出0.9,但是程序输出的是
0.8999999999999999

在java程序中,JDK提供了BigDecimal类,以解决精度丢失这一问题,但到底是什么原因呢?

这种舍入误差的主要原因是 浮点数值采用二进制系统表示 ,而在二进制系统中无法精确地表示分数 1 / 10。 这就好像十进制无法精确地表示分数 1 / 3—样。

你可能感兴趣的:(心得体会,java)