乘以浮点数后结果错误

时间:2019-02-07 17:35:59

标签: java floating-point

我的Java代码有奇怪的问题。为什么每个低于0.4f的数字乘以0.0025f都会给我错误的结果。

正确的结果:

0.4f * 0.0025f = 0.001f

错误的结果:

0.399999f * 0.0025f = 9.999975E-4

instead of 0.000999998f

0.33333f * 0.0025f = 8.33325E-4
instead of 0.000833325f

0.11111f * 0.0025f = 2.77775E-4
instead of 0.000277775f

1 个答案:

答案 0 :(得分:3)

您如何打印结果。您也许应该看一下。听起来您好像不懂指数表示法。

9.999975E-4 == 0.000999975

E-4只是意味着将小数点后四位向右移。

此外,您做错了自己的数学运算。您有一个以9结尾的数字乘以以5结尾的数字,这意味着答案将以5结尾(毕竟9 x 5为45)。因此不会是0.000999998。您可以从四舍五入的东西中得到答案,也许是计算器无法完全显示出来。

您没有数学问题。您有显示问题,并非如此。是因为您不了解显示内容。

也许会查找printf方法,并使用格式字符串,该格式字符串在小数点后的数据空间很大。