<分区>
你能解释一下为什么我得到下一个结果吗:
当我运行这个时:
System.out.println((0.2 - 0.1));
我得到:0.1
当我运行这个时:
System.out.println((0.3 - 0.2));
我得到:0.09999999999999998
我知道数字“0.1”在二进制中没有有限表示,但它不能解释上面的结果。这很可能与特定语言无关,而是与数字在计算机中的存储方式有关。
<分区>
你能解释一下为什么我得到下一个结果吗:
当我运行这个时:
System.out.println((0.2 - 0.1));
我得到:0.1
当我运行这个时:
System.out.println((0.3 - 0.2));
我得到:0.09999999999999998
我知道数字“0.1”在二进制中没有有限表示,但它不能解释上面的结果。这很可能与特定语言无关,而是与数字在计算机中的存储方式有关。
最佳答案
Java 使用 IEEE floating point表示 double
值。这不是一个精确的表示,一些计算会导致以这种方式表现出来的微小错误。
关于java - float 表示,Java 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20470114/