请教一个关于Java浮点数精度的基础问题
高洛峰
高洛峰 2016-11-07 13:55:51
0
1
463

执行这两行:

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,上面的存在精度问题,下面的却不存在?

谢谢回答

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

reply all(1)
三叔

建议你看看浮点数使用二进制是如何表示的。 这里的问题就是0.3和0.1不能使用二进制完全表示,所以会丢失精度,而0.4和0.2 是可以完全表示的

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template