如何在javascript中显示超过20个小数点?

时间:2017-07-19 04:26:42

标签: javascript floating-point precision pi

我正在制作一个显示pi数字的网页。我能够使用toFixed方法获取我的pi变量以显示20位pi,但我想知道我是否可以显示更多。小数位数是否受我变量的内存大小限制?有没有办法显示超过20位?

编辑:我应该澄清我正在使用Chudnovsky Algorithmn来计算pi的值。我假设因为var变量的内存限制,它只能显示一定数量的数字,限制为20? Source

3 个答案:

答案 0 :(得分:1)

你不能。

尝试将这些位存储在多个变量中,使用字符串或获取bignum library,或者只需要处理整数,biginteger库。

答案 1 :(得分:1)

您无法使用原生JavaScript执行此操作以获取更多信息,请参阅this

以下内容被转换为float:

tft(1).Id = 'Name1';
tft(1).Desc = 'goes by the name';
tft(2).Id = 'Name2';
tft(2).Desc = 'hates the name';

for a=1:length(tft)
    list{a} = tft(a).Id
end

,您可以打印字符串或使用mathjs

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

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

答案 2 :(得分: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));
}