gpt4 book ai didi

javascript - Decimal.js tan 的精度问题

转载 作者:行者123 更新时间:2023-11-30 14:59:34 27 4
gpt4 key购买 nike

我一直在使用 Decimal.js 来提高我的函数的精度,该函数通过反复试验计算 a = tan(a) 的第 m 个正根。它可以工作,但是对于 nTan(504)(将返回 4.4934... 到 505 位)和更大,它会返回“超出精度限制”错误。

var Decimal = require("decimal.js");
var fs = require("fs");

function nTan (acc, m) {
var test = [1], acc = (parseInt(acc) || 15) + 1;
Decimal.set({precision: acc});
var n = new Decimal(fs.readFileSync("result.txt", "utf-8") || 4.4).toString();

while (n.length + test.length - 2 < acc) {
var dec = (new Decimal(n + test.join("")));
if (dec.tan().cmp(n + test.join("")) >= 0) {
test[test.length - 1]--;
test.push(1);
} else test[test.length - 1]++;

if (test[test.length - 1] == 10) { test[test.length - 1] = 9; test.push(1); }
}

return (new Decimal(n + test.slice(0, -1).join(""))).plus(Math.PI * (parseInt(m) || 0)).toString();
}

我的问题是:

  1. 当 Decimal.js 宣传最多(包括)1e+9 位的容量时,为什么不计算过去的 504 位?
  2. 是否有替代 Node 或 JS API 可以更精确地支持该程序?

最佳答案

1000000000decimal.js 精度 设置的最大允许值,但这并不意味着三 Angular 函数可以返回具有该有效数字位数的结果。

三 Angular 函数的精度限制由源代码中Pi 值的精度决定。在decimal.js文件中硬编码为字符串变量PI,精度为1025> 数字。

这意味着 cossintan 的精度限制 方法最多约 1000 位,但实际数字取决于传递给它们的参数的精度。计算实际数字使用

ma​​ximum_result_precision = 1000 - argument_precision

例如,以下都可以正常工作

Decimal.set({precision: 991}).tan(123456789);

Decimal.set({precision: 9}).tan(991_digit_number);

对于每个结果精度加上参数精度,即 991 + 99 + 991,小于或等于 1000

这就是当您尝试计算超过 500 位的参数的 tan 时程序失败的原因超过 500 位。

要做到这一点,需要更高的精度 Pi - 这只能通过编辑 PI 的值来完成,而且可以简单地完成 在源代码中,即向其添加更多数字。这些方法所花费的时间将成为限制因素。

我是图书馆的作者,我需要将其添加到其文档中。

关于javascript - Decimal.js tan 的精度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46744170/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com