Точность с плавающей точкой. как получить самый широкий диапазон значений - PullRequest
0 голосов
/ 04 марта 2020

Я копаюсь в проблеме значений с плавающей запятой. Я видел отличную страницу на

https://www.h-schmidt.net/FloatConverter/IEEE754.html

и прочитал много постов. Я пришел к выводу и хотел бы знать, правильно ли это.

Существует компромисс между точностью, которую вы можете получить, и насколько большой является целая часть вашего числа.

Если решите, что мне нужны только 2 десятичных знака точности, диапазон значений, которые я могу сохранить и получить без ошибок, достигает 32767,99 (по крайней мере, это из эмпирического теста с преобразователем выше). Вместо этого, если я полностью откажусь от десятичных знаков, я могу получить до 16777216. Правильно ли заключить, что с двумя десятичными числами у меня может быть 3276800 уникальных значений, и без каких-либо десятичных знаков я могу хранить до 16777217 уникальных значений?

Это можно перефразировать следующим образом: учитывая, что меня интересует хранение самого широкого диапазона уникальных значений без ошибок, и учитывая, что я обязан использовать плавающие числа, правильно ли говорить, что отсутствие десятичных дробей - это путь к go ?

РЕДАКТИРОВАТЬ: то, что я написал о повышении до 32767,99, является ложным, я видел это с более эмпирическими тестами. Таким образом, 32767.2 хранится как 32767.19921875. На практике возникает вопрос: если я связан с использованием чисел с плавающей точкой, и я не могу позволить себе эти ошибки, правильно ли, что без десятичных знаков я могу правильно представлять значения от 0 до 16777216?

...