请教一个关于Java浮点数精度的基础问题
高洛峰
高洛峰 2016-11-08 13:25:24
0
1
456

执行这两行:

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教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全員に返信(1)
三叔

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート