【发布时间】:2017-07-12 01:17:17
【问题描述】:
我想以 任意精度 计算 (A/B) 的某个 (C/D) 次根,用于根的十进制扩展(例如,如果所需的精度是整数 @ 987654322@,结果应包含E根的小数点后位;E可能至少等于几万;A、B、C、D为包含十位的整数成千上万的十进制数字),但我发现的所有 Javascript 数学库都将拒绝处理这些数字。
我尝试使用Decimal.js,但它的精度有限,输入的大小也有限。例如,如果我想用 1025 个有效数字计算 2 的平方根(最后一个数字可能会以某种方式四舍五入),我对 Decimal.js 使用了以下代码:
Decimal.set({ precision: 1025 });
var r2 = Decimal.pow(2, Decimal.div(1, 2)).toDP(1025).toString();
console.log(r2);
但我明白了
Error: [DecimalError] Precision limit exceeded
是否可以使用客户端(在浏览器中工作)Javascript 来解决问题?据我所知,有一些有效的算法可以计算 百万 位的根,但我没有看到在 JS 中实现任意大数和任意精度的任何算法。有可能吗?
【问题讨论】:
-
Precision: 1025:-o -
您可能希望将内部工作精度设置为高于显示的精度,计算链中每 2 或 3 次操作加 1 位数字加上 3 的缓冲区。这里将给出
Decimal.set({ precision: 1029 });跨度> -
@LutzL:我不明白...我应该使用什么代码来获取 Decimal.js 中二的平方根的 1500 位?此外,据我了解,Decimal.js 无法处理大于 2^1024 的整数。
-
我不知道会为您打开哪个页面,在我的版本中显示“precision number: integer, 1 to 1e+9 inclusive, Default value: 20”。你从哪里得到 2^1024?
标签: javascript algorithm math numbers