Можно ли вообще использовать типы данных с плавающей точкой для хранения точных чисел? - PullRequest
0 голосов
/ 04 декабря 2011

Если я непосредственно (не получая его в результате вычислений) явно назначить 0,0001 переменной типа Double, гарантированно ли она точно равна 0,0001, куда бы она ни направлялась?

1 Ответ

2 голосов
/ 04 декабря 2011

Нет ... потому что просто невозможно представить 0,0001 как (конечную) двоичную дробь - вы получите ошибку округления при компиляции или интерпретации литерала.

Однако целые числа могут храниться без округления - до предела точности, который, конечно, ниже, чем для целочисленного типа того же размера. И когда достигается предел, вместо переполнения вы начинаете терять точность, поэтому в какой-то момент d == d+1

...