Отладчик округляет числа с плавающей запятой... почему это происходит и как обойти это?
У меня есть следующий код:
public static float FLOAT_VALUE = 0.899999761581421f;
Но всякий раз, когда я вызываю это значение с помощью отладчика, я вижу, что теперь оно становится 0,9f. Почему это происходит и как мне обойти это?
1 ответ
Решение
Либо значение действительно меняется, либо, что более вероятно, отладчик не отображает достаточно цифр, чтобы различать различные значения с плавающей точкой.
Ближайший float к 0.899999761581421 - 0.89999973773956298828125. Ближайшее значение с плавающей точкой 0,9 составляет 0,89999997615814208984375. Они разные.
Преобразование toString 0,89999973773956298828125 составляет 0,89999974, а не 0,9