2014-01-19 4 views
1

Когда вы запускаете огромную сумму в JS, она выходит с чем-то вроде: 1.0328135768135768e+21. Есть ли способ заставить его выводить чистое целое число, даже если оно очень длинное?Как остановить javascript от чисел форматирования?

Спасибо.

+1

Нет, если число не находится за пределами целочисленного диапазона, как в приведенном выше примере. – marekful

ответ

2

.toString() method, похоже, делает трюк. Сортировать по:

1.0328135768135768e+21.toString("10"); 
// "1032813576813576802460" 

1.0328135768135768e+50.toString("10") 
// "103281357681357664662886440420862446808642642662440" 

Заметим, что (как показано выше) из-за обработки JS в чисел с плавающей точкой не только получить цифры, указанные с нулями на конце.

Если вы хотите, чтобы все нули на конце, вы всегда можете отформатировать его самостоятельно:

function formatNumber(n) { 
    var s = n + "", 
     a = s.split("e"); 
    if (a.length === 1) 
     return s; 
    s = a[0].replace(/\./,""); 
    s += (new Array(+a[1] - s.length + 2).join("0")); 
    return s; 
} 

Demo: http://jsfiddle.net/HLQQ9/ (Примечание: не тестировалось тщательно вообще, только полусырой идея, которую я взломал вместе дать вам отправную точку.)

Или есть несколько библиотек big number.

+0

+1, спасибо, работает отлично. –

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