Большое число в javascript

Я работаю над калькулятором в javascript, где пользователь может вводить значения в текстовое поле, и операция будет выполнена. Теперь, если пользователь вводит очень большое значение, например, 5345345345353453453453535, оно преобразуется в 5,345345345353453e+24.

Я использую parsrInt() для преобразования его в целые числа. и это дает мне 5. что неправильно. Может ли кто-нибудь предложить, как это решить?


person sabu    schedule 21.02.2013    source источник
comment
Это может быть полезно: stackoverflow.com/questions/11124451/   -  person Schleis    schedule 21.02.2013
comment
возможный дубликат Как работать с большими числами в javascript   -  person JaredMcAteer    schedule 21.02.2013


Ответы (3)


Целые числа в javascript, как и любые числа, хранятся как IEEE754 с плавающей запятой двойной точности.

Таким образом, вы можете точно хранить целые числа до 2 ^ 51 (размер мантиссы).

Это означает, что вам придется разработать другой формат для работы с большими целыми числами или использовать существующую библиотеку, например BigInteger. js (Google предложит несколько других).

person Denys Séguret    schedule 21.02.2013

Взято из документации Mozilla:

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

Поэтому parseInt() принимает ваше значение как строку 5.345345345353453e+24

Затем он игнорирует любые нецелочисленные значения и классифицирует это как десятичное (5,345...), а затем оценивает это как 5.


Как указал @dystroy, если вы хотите выполнять вычисления с этими большими числами, вам нужно будет использовать пользовательский формате или используйте уже существующую библиотеку javascript.

person Curt    schedule 21.02.2013

Попробуйте parseFloat вместо parseInt.

<script type="text/javascript">
    var value = parseFloat(5345345345353453453453535);
    alert(value);
</script>
person Felipe Miosso    schedule 21.02.2013
comment
Это не даст вам 5345345345353453453453535, а только округленное значение. - person Denys Séguret; 21.02.2013