javascript - 如何在 javascript 中获取精度高于 21 的数字

标签 javascript precision

如何在 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 的内部数字表示 (double-precision floating point) 的精度有限,您需要现有的大整数库之一来克服此限制。

例如,您可以使用 bignumber.js :

// Configure to (almost) never use scientific notation:
BigNumber.config({ EXPONENTIAL_AT: 1e+9 });
var val=10;
// Store the feb numbers as BigNumber instances:
feb=[new BigNumber(0), new BigNumber(1)];
for(var i=2; i<=val; i++){
    feb[i] = feb[i-2].plus(feb[i-1].toPower(2));
    console.log(feb[i].toString());
}    
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/bignumber.js/4.0.2/bignumber.min.js"></script>

请注意,某些其他语言会自动提供大整数,例如 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])

查看它在 repl.it 上运行.

关于javascript - 如何在 javascript 中获取精度高于 21 的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44121448/

相关文章:

javascript - ajax jquery json 返回 500 内部服务器错误(未定义),但 webmethod 有效

Go:如何检查将 float64 转换为 float32 时的精度损失

javascript - 使用 background-size : cover with Javascript? 时是否可以测量生成的背景图像

javascript - 如何在没有初始刷新的情况下从服务器准备好 Angular.js 应用程序

python - 兰德指数函数(聚类性能评估)

math - float 学有问题吗?

c++ double /精度

C++ 将 1 加到非常小的数字?

javascript - Expressjs res.json 在body中渲染html和json

javascript - 获取 TR 表外最接近的隐藏值