当我跑步时:

    System.out.println(1f - 0.9f);


我得到:

    0.100000024


这是因为0.1没有二进制表示。

那为什么当我打印这个:

    System.out.println(0.1f);


我得到这个:

    0.1

最佳答案

浮点数0.1可以比0.9更好。松散地说,这是因为0.1较小且更接近于其最近的二元有理数。

因此,从1.0中减去时的误差较大。

因此,这两个值不同。

使用0.1的println中的嵌入式格式化试探法可以做得更好

关于java - 如果0.1没有二进制表示,为什么我得到0.1,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30808492/

10-14 00:51