2017-07-19 7 views
1

私はpiの数字を表示するウェブページを作っています。私はtoFixedメソッドを使ってpi変数を20桁のpiで表示することができましたが、もっと表示できるかどうかは疑問です。小数点以下の桁数は、変数のメモリサイズによって制限されますか? 20桁以上を表示する方法はありますか?JavaScriptで20個以上の小数点を表示するにはどうすればいいですか?

EDIT:piの値を計算するためにChudnovskyアルゴリズムを使用していることを明確にすべきでした。私はvar変数のメモリ制限のために、それは20までに制限された特定の桁数までしか表示できないと仮定していますか? Source

+0

あなたは、単に 'Math.PI'を使用して小数点以下の任意の数を表示することができません。 'pi'に任意の10進精度を適用するには、何らかの数式を使用する必要があります(このようなものはhttps://www.math.hmc.edu/funfacts/ffiles/20010.5.shtml)。 「toFixed」は20以上の引数を受け付けないと言います。(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed) –

+0

私は持っていなければなりませんPiの値を計算するためにChudnovskyアルゴリズムを使用していることを明確にしました。より多くの数字を保存するために、データ型をbignumオブジェクトにしなければならないと思われます。私の[ソースコード](https://github.com/so0p/ChudnovskyAlgorithm/blob/master/script.js)は、誰かが気にしている場合はここにあります。私は助言に感謝します。 –

+0

何桁の数字が必要ですか、または任意の精度が必要ですか? –

答えて

1

できません。

複数の変数にビットを格納したり、文字列を使用したり、bignum libraryを取得したり、整数を処理する必要がある場合はbigintegerライブラリを使用してください。

1

詳細については、ネイティブJavaScriptでこれを行うことはできません。thisを参照してください。

次はfloatにキャストされます。

var x = 3.14159265358979323846; 
print(x.toFixed(20)); 

ただし、あなたは文字列を印刷するか、またはmathjsを使用する:

var one = math.bignumber(1); 
var pi = math.bignumber('3.14159265358979323846'); 
var ans = math.multiply(one, pi); 
print(ans.toString()); 

はあなたに"3.14159265358979323846"

1

を与えるだろう、私は」チート:

var pi = '3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196442881097566593344612847564823378678316527120190914564856692346034861045432664821339360726024914127372458700660631558817488152092096282925409171536436789259036001133053054882046652138414695194151160943305727036575959195309218611738193261179310511854807446237996274956735188575272489122793818301194912983367336244065664308602139494639522473719070217986094370277053921717629317675238467481846766940513200056812714526356082778577134275778960917363717872146844090122495343014654958537105079227968925892354201995611212902196086403441815981362977477130996051870721134999999837297804995105973173281609631859502445945534690830264252230825334468503526193118817101000313783875288658753320838142061717766914730359825349042875546873115956286388235378759375195778185778053217122680661300192787661119590921642019'; 
 

 
var piDecimal = function(numDigits) { 
 
    return pi.substr(0, numDigits + 2); // Add 2 to compensate for "3." 
 
}; 
 

 
for (var i = 1; i < 100; i++) { 
 
    console.log(i + ' decimal place' + (i === 1 ? '' : 's') + ': ' + piDecimal(i)); 
 
}

関連する問題