javascript - JavaScript:几何和的 BigInteger 实现
问题描述
假设我在这里有这个等式:
a * (1 - r ^ n) / (1 - r)
基本上,它是几何数列之和的公式。在我们的例子中,r
是一个小数(浮点数)。
我期望得到的数字大于最大安全整数,因此必须使用 BigInt。
几何和是否有 BigInt 实现?
提前致谢!
这是我尝试过的:
function geoSum(a, r, n) {
return BigInt(a * ((1 - r ** n) / (1 - n)));
}
Infinity
在它可以转换为 BigInt 之前,它已经变成了。
提前致谢!
解决方案
您应该在应用操作BigInt
之前将每个参数转换为:
function geoSum(a, r, n) {
const an = BigInt(a);
const rn = BigInt(r);
const nn = BigInt(n);
return an * ((1n - rn ** nn) / (1n - nn));
}
const result = geoSum(150, 151, 152);
console.log(String(result));
console.log(Number(result));
推荐阅读
- ftp - Wget - 如何从 ftp 服务器下载一些文件?
- android - 适用于 Android 和 iOS 的本机应用程序。一点Javascript知识。原生脚本?反应原生?其他想法?
- vba - VBA Word - 有条件地接受页眉和页脚的更改
- javascript - 选择 + 引导 4
- php - PHP 警告:ldap_search()
- c# - 不能在新的 C# 项目中使用现有的类?
- android - Android:文档上是否有任何特定位置可以找到明确的 XML 引用?
- reactjs - 使用 React Router 进行路由的正确方法
- angular - 如何在 Angular 4 中发出正常的发布请求
- ios - 在 UITabBarController 按钮单击时触发图像选择器