Java中小数运算为何会频繁遭遇令人头疼的精度难题?
- 内容介绍
- 文章标签
- 相关推荐
本文共计422个文字,预计阅读时间需要2分钟。
直接运行以下代码:`double a=4.0; double b=3.6; System.out.println(a - b);` 我们可以看到运行结果是 `0.4`。
话不多说直接上Demodoublea4.0;doubleb3.6;System.out.println(a-b);我们可以看到运行结果是0.3999999999999999,期话不多说直接上Demo
double a = 4.0;double b = 3.6;System.out.println(a - b);
我们可以看到运行结果是0.3999999999999999,期望结果是0.4。
原因简单来说:2进制的小数无法十分精准的表达十进制的小数,计算机在计算十进制小数运算的时候需要先转换成2进制进行计算,这个过程中出现了一些误差。
本文共计422个文字,预计阅读时间需要2分钟。
直接运行以下代码:`double a=4.0; double b=3.6; System.out.println(a - b);` 我们可以看到运行结果是 `0.4`。
话不多说直接上Demodoublea4.0;doubleb3.6;System.out.println(a-b);我们可以看到运行结果是0.3999999999999999,期话不多说直接上Demo
double a = 4.0;double b = 3.6;System.out.println(a - b);
我们可以看到运行结果是0.3999999999999999,期望结果是0.4。
原因简单来说:2进制的小数无法十分精准的表达十进制的小数,计算机在计算十进制小数运算的时候需要先转换成2进制进行计算,这个过程中出现了一些误差。

