2013-04-17 26 views
6

我有JavaScript代碼,經常輸出非常大的數字,我想完全顯示而不是得到一個值,如2.7934087356437704e+56我希望它顯示整個數。是否有可能在JS中發生這種情況?Javascript顯示真的很大的數字,而不是顯示xe + n

+1

看看這裏的答案http://stackoverflow.com/questions/4170633/opposite-of-number-toexponential-in-js – TommyBs

+0

你真的需要60位精確數字嗎?誰應該閱讀他們,你在與他們計算什麼? – Bergi

回答

3

有了這麼大的數字,你將失去JavaScript的精度。它返回的指數形式是Javascript可以表示的最精確的形式。但是,如果您不關心精度的損失,只需要擴展數字的字符串,則可以使用自己的函數來執行此操作。我找不到一種方法可以在本地執行此操作,因此您必須將其添加到自己中。

我發現這個片斷它會替您Jonas Raoni Soares Silva

String.prototype.expandExponential = function(){ 
    return this.replace(/^([+-])?(\d+).?(\d*)[eE]([-+]?\d+)$/, function(x, s, n, f, c){ 
     var l = +c < 0, i = n.length + +c, x = (l ? n : f).length, 
     c = ((c = Math.abs(c)) >= x ? c - x + l : 0), 
     z = (new Array(c + 1)).join("0"), r = n + f; 
     return (s || "") + (l ? r = z + r : r += z).substr(0, i += l ? z.length : 0) + (i < r.length ? "." + r.substr(i) : ""); 
    }); 
}; 

的利用方法是:

> var bignum = 2.7934087356437704e+56; 
> (bignum+'').expandExponential(); 
"279340873564377040000000000000000000000000000000000000000" 

你必須先投下數爲字符串,因此+''

如果您確實需要準確的精度,您可以嘗試使用庫如Big Numberjavascript-bignum

+0

:)精度並不重要,我只是需要它是正確的數字位數的長度。謝謝! – Seb

1

在JavaScript中所有的數字都是浮點數,所以你沒有絕對的精度。

+0

因此無法準確顯示數字爲〜250位數字? – Seb

+0

@Seb,您需要使用與bignum打交道的第三方庫。有很多可用的。 – Fabien

+2

@法比恩,你能指點我嗎? – Seb