2009-07-06 1 views
8

Для веб-приложения я хочу иметь возможность обрабатывать номера размером до 64 бит. Во время тестирования я обнаружил, что javascript (или браузер в целом), похоже, обрабатывает целых 17 цифр. 64-разрядное число имеет максимум 20 цифр, но после обработки javascript число наименее значимых 3 цифр округлено и установлено на 0 .... Любые идеи, из которых это происходит? Что еще более важно, любая идея, как обойти это?Как я могу обрабатывать числа, превышающие 17 цифр в Firefox/IE7?

ответ

5

В JavaScript все числа IEEE double precision числа с плавающей точкой, а это значит, что у вас есть только около 16 цифр точности; остальные 64 бит зарезервированы для экспоненты. Как отмечает Фабьен, вам нужно будет выполнить некоторые трюки, чтобы получить больше точности, если вам нужны все 64 бит.

5

Я думаю, что вы должны рассматривать их как строки, если вы достигли предела Javascript (see here)

0

Вы можете попытаться разбить их на два или более числа (возможно, в классе), но вам могут понадобиться некоторые вспомогательные арифметические функции для работы с ними.

Приветствия

2

Как другие отмечают, JS реализует дублей, так что вам придется искать в другом месте, чтобы обрабатывать большие числа. BigInt - это библиотека для абсолютной математики точности для целых чисел.

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