2017-07-27 15 views
0

倍精度整数の結果を得る方法division JSで巨大な数値の演算?JSの巨大数の算術演算のための正確な整数結果を得るには?

は、我々が持っているとしましょう:これらの数字を掛ける

var a = 75643564363473453456342378564387956906736546456235342; 
var b = 34986098309687982743378379458582778387652482; 

は私に科学的な「E」表記の数を示します。正確な整数結果の数値全体を表示するには?

が、私はこのライブラリを使用してみました https://github.com/peterolson/BigInteger.js

Readmeには、こう述べています。Javascriptの数字より大きいと より小さい-9007199254740992が正確 数字を表現していないことを

注意正確な結果が得られません。その範囲外の数字 を扱っている場合は、文字列を渡す方が良いでしょう。

しかし、文字列を使ってどのように計算しますか?

+0

なぜこのような正確な数値が必要ですか? – ItamarG3

答えて

3

bigIntを使用すると、ヒントとして、数値の代わりに文字列を使用して正しく表現する必要があります。

bigInt("75643564363473453456342378564387956906736546456235342").multiply("34986098309687982743378379458582778387652482"); 
+0

ありがとうございます。しかし、それは配列を返します、あなたはまた、それを文字列にする方法をアドバイスできますか? '.join(" ")'はエラーをスローする 'result.join is not a function'その操作を含む変数' var result'に参加しようとすると – Un1

+1

.toString()を使うと、readmeでよく説明されています。 – Salketer

+0

これはまったく別の質問になります... "浮動小数点数でBigIntegerを動作させるにはどうすればいいですか?"そして、申し訳ありませんが、私はこれに答えることはできません。 – Salketer

-1

私はこの質問がリンクの上から撮影したhow-to-avoid-scientific-notation-for-large-numbers-in-javascript

この機能の重複だと思います。

function toFixed(x) { 
if (Math.abs(x) < 1.0) { 
var e = parseInt(x.toString().split('e-')[1]); 
if (e) { 
    x *= Math.pow(10,e-1); 
    x = '0.' + (new Array(e)).join('0') + x.toString().substring(2); 
    } 
} else { 
var e = parseInt(x.toString().split('+')[1]); 
if (e > 20) { 
    e -= 20; 
    x /= Math.pow(10,e); 
    x += (new Array(e+1)).join('0'); 
} 
} 
return x; 
} 

alert(toFixed(a*b)); 
+0

これは精度の問題をまったく解決しません。 –

関連する問題