2016-02-22 3 views
3

В JavaScript следующего номераJavascript остановка авто округление

9999999999999999.99 

получает преобразовано в

10000000000000000 

Как я могу предотвратить такое поведение?

+2

Это проблема точности с плавающей запятой ... за пределами 9007199254740991 даже целые числа начинают вести себя странно ... например, '9007199254740992 == 9007199254740993' является ** истинным ** –

ответ

1

Это мое понимание, что лучший способ справиться с этим - делать все ваши вычисления целыми числами и делиться на 100 (или плюс столько же нулей, сколько необходимо) впоследствии.

Если вам абсолютно необходимо использовать десятичные знаки, this post содержит много полезной информации, которая вам полезна.

+0

Я не уверен, что это поможет в этом случае. Ближайший 64-битный двоичный бит IEEE 754 до 999999999999999999 составляет 1000000000000000000. Он может быть представлен точно с использованием, например, Java long, который имеет 64 бита, но я не думаю, что это доступно в JavaScript. –

Смежные вопросы