调试器舍入浮点数...为什么会发生这种情况,以及如何绕过它?

时间:2017-10-04 00:11:56

标签: java floating-point precision

我有以下代码:

public static float FLOAT_VALUE = 0.899999761581421f;

但每当我使用调试器调用此值时,我发现它现在变为0.9f。为什么会发生这种情况?如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

值实际上是在变化,或者更有可能的是,调试器无法显示足够的数字来区分不同的浮点数。

最接近0.899999761581421的浮动是0.89999973773956298828125。最接近0.9的浮点数是0.89999997615814208984375。它们是不同的。

toString转换为0.89999973773956298828125是0.89999974,而不是0.9