Как решить проблему с круглым числом в JavaScript

У меня возникла проблема, из-за которой, если я ввожу 9 шестнадцать раз и форматирую его с помощью бухгалтерского учета js или даже Math.round(9999999999999999), он становится 10000000000000000. Как мне решить эту проблему.

Ссылка на бухгалтерский учет js или помогите мне решить проблему с math.random также.

http://openexchangerates.github.io/accounting.js/


person user7386493    schedule 18.05.2017    source источник
comment
Я предлагаю вам ознакомиться с документацией MDN о MAX_SAFE_INTEGER здесь. Я думаю, что это связано с некоторыми ограничениями на длину целых чисел.   -  person Arkadiusz Wieczorek    schedule 18.05.2017
comment
вы можете прочитать это   -  person Max Koretskyi    schedule 18.05.2017
comment
Вы получаете значение в виде строки? Каков ожидаемый результат? См. также Как добавить 1 к большому целому числу, представленному в виде строки в JavaScript?   -  person guest271314    schedule 18.05.2017
comment
mikemcl.github.io/bignumber.js   -  person Emissary    schedule 18.05.2017
comment
Будет здорово, если вы сможете создать для меня пример. я не умею спасибо   -  person user7386493    schedule 18.05.2017


Ответы (1)


Плавающая точка не может точно представлять все числа. Вы увидите это в целых числах, как только ваши числа превысят 9,007,199,254,740,991 (Число.MAX_SAFE_INTEGER).

За пределами Number.MAX_SAFE_INTEGER + 1 (9007199254740992) формат с плавающей запятой IEEE-754 больше не может представлять каждое последовательное целое число, поскольку у вас больше нет бита 1; младший бит теперь представляет собой число, кратное 2. В конце концов, если мы продолжим, мы потеряем этот бит и будем работать только с числами, кратными 4. И так далее.

Ваши значения намного выше этого порога, поэтому они округляются до ближайшего представимого значения.

person rickvdbosch    schedule 18.05.2017
comment
Как мне решить это в JavaScript, потому что у меня есть требование хранить его так же, как 9 шестнадцать раз - person user7386493; 18.05.2017
comment
Как насчет того, чтобы использовать значение в миллион раз больше и настроить отображение? Однако следите за максимальным значением плавающего числа. - person Raptor; 18.05.2017
comment
Дело в том, что я использую учет js для метода formatMoney для события размытия и unformatMoney для события keydown в то время, когда я передаю значение 99999999999999999 в unformatMethod , оно становится 100000000000000000. Поэтому мне нужно решить эту проблему. - person user7386493; 18.05.2017