Итак, я пытался обернуть голову вокруг соотношения между числом значащих цифр в числе с плавающей запятой и относительной потерей точности, но я просто не могу понять, имеет ли это смысл.Ранее я читал статью, в которой говорилось, что нужно сделать следующее:
- Установите значение с плавающей запятой на значение 2147483647. Вы увидите, что его значение на самом деле равно 2147483648
- Вычтите 64 изfloat, и вы увидите, что операция правильная
- . Вычтите 65 из числа float, и вы увидите, что у вас теперь есть 2147483520, то есть фактически вычтено 128.
Так почемуэто 128, когда есть 10 значащих цифр?Я понимаю, как хранятся числа с плавающей запятой (1 бит для знака, 8 бит для экспоненты, 23 бита для мантиссы) и понимаю, как вы потеряете точность, если предположите, что все целые числа автоматически найдут точные дома в структуре данных с плавающей запятой, но я неЯ не понимаю, откуда взялись 128.Интуиция подсказывает мне, что я на правильном пути, но я надеюсь, что кто-то сможет прояснить это для меня.
Сначала я думал, что расстояние между возможными числами поплавков было 2 ^ (n-1) где n - количество значащих цифр, но это не так.
Спасибо!