2013-04-17 14 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 Numberまたはjavascript-bignumのようなライブラリを使用してみてください。

+0

:)精度はあまり重要ではありません。ちょうど桁数で正しい長さにする必要があります。ありがとう! – Seb

1

JavaScriptではすべての数値は浮動小数点数なので絶対精度はありません。

+0

したがって、数字を〜250桁まで正確に表示することはできませんか? – Seb

+0

@Sebでは、bignumsを扱うサードパーティのライブラリを使用する必要があります。かなり利用可能です。 – Fabien

+2

@ファビアン、何かを教えてくれませんか? – Seb

関連する問題