ホームページ > に質問 > 本文
执行这两行:
System.out.println(0.3-0.1); System.out.println(0.4-0.2);
打印出来的分别是:
0.19999999999999998 0.2
问题1:为什么第一个现实出来的,小数点后面有17位,double的长度不是64么,不应该只能显示16位么?
问题2:浮点数的精度问题原因我懂,但是为什么同样结果是0.2,上面的存在精度问题,下面的却不存在?
谢谢回答
三叔2016-11-08 13:25:34
建议你看看浮点数使用二进制是如何表示的。 这里的问题就是0.3和0.1不能使用二进制完全表示,所以会丢失精度,而0.4和0.2 是可以完全表示的