【发布时间】:2014-05-06 19:57:03
【问题描述】:
我的挑战
我目前正在使用 Node.js 解决 reddit 的 /r/dailyprogrammer 挑战,但遇到了障碍。由于我将通过这个单一练习完成第 3 天,因此我决定寻求帮助。我拒绝在不知道怎么做的情况下继续前进。
挑战 #6:您今天的挑战是创建一个程序,可以将 pi 精确计算到小数点后 30 位。
我的障碍
我已经设法通过mathjs 获得了我正在寻找的精确算术,但是对于如何获得小数点后 30 位感到困惑。有谁知道可以帮助我实现目标的库、解决方法或配置?
/*jslint node: true */
"use strict";
var mathjs = require('mathjs'),
math = mathjs();
var i,
x,
pi;
console.log(Math.PI);
function getPi(i, x, pi) {
if (i === undefined) {
pi = math.eval('3 + (4/(2*3*4))');
i = 2;
x = 4;
getPi(i, x, pi);
} else {
pi = math.eval('pi + (4/('+x+'*'+x+1+'*'+x+2+')) - (4/('+x+2+'*'+x+3+'*'+x+4+'))');
x += 4;
i += 1;
if (x < 20000) {
getPi(i, x, pi);
} else {
console.log(pi);
}
}
}
getPi();
我已经完成了许多交互,在这个例子中我使用了 Nilakatha 系列:
【问题讨论】:
-
您已阅读 bignumber documentation 以及如何配置 mathjs 以实现 30 位精度?
-
我尝试使用
Math.PI.toFixed(30),但显然 toFixed 允许的最大位数是 20 -
不,Bergi,我没想过要这么做。好主意。
-
我找到了
DECIMAL_PLACES : 30option,但我不知道如何用 mathjs 实现这个配置。我很乐意扔掉 mathjs,但我仍然想学习如何配置依赖项。 -
math.js 支持 bignumbers,但是像
pi这样的内置常量仍然缺乏 bignumber 支持,它们是常规 Numbers。将实现对常量的 bignubmer 支持。
标签: javascript node.js math bigdecimal mathjs