#java #floating-point
#java #с плавающей запятой
Вопрос:
Я попробовал следующую операцию :
728660000f-728659968f
Какая операция с минусом в float, и она заканчивается как «0», почему?
Комментарии:
1. Взгляните на это !
Ответ №1:
Эти два значения не могут быть представлены точно как значения с плавающей запятой с одинарной точностью, и приближения, сделанные при преобразовании их из целых чисел, приводят к тому, что два значения имеют одинаковое значение. Следовательно, вычитание их дает 0.
Комментарии:
1. Приближение 7.2865997E8
2. @EdwardM.B.
728659968f
, на самом деле. Конечно, нет7.2865997E8
, то есть adouble
со значением 728659970, хотя вы могли бы сказать, что приближение равно728660000f
or728659970f
, поскольку оба эти представления соответствуют одному и тому же числу с одинарной точностью.