Каковы риски разбора числовых строк в поплавки? - PullRequest
0 голосов
/ 04 марта 2019

В этом API (https://docs.gemini.com/rest-api/#current-order-book), он говорит:

Возвращенные количества и цены возвращаются в виде строк, а не чисел. Возвращенные числа являются точными, а не округленными, и могутопасно рассматривать их как числа с плавающей запятой.

Почему было бы «опасно» рассматривать числовые строки как числа с плавающей запятой? Это просто потеря точности? Если это потеря точности, техническивозвращать поплавки более «опасно», во-первых. Эта цитата, по-видимому, подразумевает, что анализ паролей может быть «опасным». Почему это может быть так?

1 Ответ

0 голосов
/ 08 марта 2019

Каковы риски разбора числовых строк в числа с плавающей точкой?

Отображение бесконечного в конечное

Обычные типы с плавающей запятой имеют конечный членустановить / размер.Скажем, float занял 32-битный.Это приводит к примерно 2 32 различным float значениям. строка имеет неограниченные комбинации.Что-то должно дать, независимо от того, закодирована ли цель float с использованием бинарных, десятичных или каменных ножей и шкур медведя 1: 40 .

Риск: Предполагается, что все значения могут быть закодированы.

Десятичное в двоичное

Типичное с плавающей запятой использует двоичное обозначение / дробь, в то время как строка часто пишется с использованием десятичных цифр.

"1.234" не имеет точного эквивалентного значения как float.Вместо этого разбор дает около 1040 *.float само по себе является точным , но не таким же точным значением, как 1,234.

Риск: если предположить, что преобразование было точным эквивалентом.

Диапазон

Даже если допускается неточность, float имеет диапазон, например +/- 10 38 , +/- 10 308 илиподобное, аналогичное, похожее.10000!не проверяется, чтобы быть представимым.

Значение может также стать настолько малым, прежде чем они будут преобразованы в 0.0.

Риск: переполнение / недостаточность.


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

В math есть real number_line float линия "пунктирная". Увеличено в примере Пример 2

...