如何在javascript中使数字的精度高于21

问题描述 投票:0回答:1

如何在javascript中使数字的精度高于21?

我收到这个号码 8.426661309628124e+22

什么时候应该是这个 8.4266613096281243382112

当我使用 toPrecision(21) 时,我得到了这个 8.42666130962812428616e+22

// my result is a result of this calculation  
 var val=10;
 feb=[0,1];
 for(var i=2; i<=val; i++){
    feb[i]= feb[i-2] + Math.pow(feb[i-1],2);
    }    
    console.log(feb[val-1])

javascript precision
1个回答
2
投票

由于 JavaScript 内部表示“数字”类型(双精度浮点)的精度是有限的,因此您需要一个大整数类型来克服此限制。

BigInt
类型:

// Store the feb numbers as BigInts:
const val = 10;
const feb = [0n, 1n];
for (let i = 2; i <= val; i++) {
    feb[i] = feb[i-2] + feb[i-1] * feb[i-1];
    console.log(feb[i].toString());
}
.as-console-wrapper { max-height: 100% !important; top: 0; }

其他语言也提供开箱即用的大整数,例如Python:

val = 10
feb = [0,1]
for i in range(2, val+1):
    feb.append(feb[i-2] + feb[i-1] ** 2)
    print(feb[i])
© www.soinside.com 2019 - 2024. All rights reserved.