首页 > 解决方案 > 乘以浮点数后的错误结果

问题描述

我的 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

标签: javafloating-point

解决方案


你如何打印你的结果。你也许应该看看那个。听起来您不了解指数表示法。

9.999975E-4 == 0.000999975

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

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

你没有数学问题。你有一个显示问题,不是真的。那是你不了解显示器。

也许查找 printf 方法并使用格式字符串,小数点后有很多数据空间。


推荐阅读