2017-07-19 22 views
1

我正在製作一個顯示pi數字的網頁。我能夠使用toFixed方法得到我的pi變量來顯示20位pi的數字,但我想知道是否可以顯示更多。小數位數是否受我變量內存大小的限制?有沒有辦法顯示超過20位數字?如何在javascript中顯示20個以上的小數點?

編輯:我應該澄清說,我正在使用Chudnovsky Algorithmn來計算pi的值。我假設由於var變量的內存限制,它只能顯示一定數量的限制在20的數字? Source

+0

你將不能夠簡單地顯示使用'Math.PI'小數點任意數量。如果你想要'pi'的任意小數精度,你需要使用某種數學公式(比如這個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

我應該有澄清說我正在使用Chudnovsky算法來計算Pi的值。看來,我將不得不讓我的數據類型爲一個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

我ll作弊:

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)); 
 
}

相關問題