Javascript防止自动取整
我想知道是否有任何方法可以防止javascript自动将我的数字四舍五入。我用Gregory Leibniz级数编制了一个计算pi的程序。它只有一定的小数位数。这是我的密码:Javascript防止自动取整,javascript,rounding,precision,floating-point-precision,arbitrary-precision,Javascript,Rounding,Precision,Floating Point Precision,Arbitrary Precision,我想知道是否有任何方法可以防止javascript自动将我的数字四舍五入。我用Gregory Leibniz级数编制了一个计算pi的程序。它只有一定的小数位数。这是我的密码: pi=0; x=1; i=1; function doStuff(){ pi = pi+(4/x); x=x+2; pi = pi-(4/x); x=x+2; document.getElementById("someDiv").innerHTML = pi; } 如果你想用数字精
pi=0;
x=1;
i=1;
function doStuff(){
pi = pi+(4/x);
x=x+2;
pi = pi-(4/x);
x=x+2;
document.getElementById("someDiv").innerHTML = pi;
}
如果你想用数字精度超过JavaScript浮标(只有64位精度),你可以考虑使用一个库,就像这个问题中提到的一个:
特别是,该库对于您的目的来说很有希望 下面是一个JSFIDLE的快速演示: 注意,fiddle正在bignumber库中链接$(document).ready(function () {
BigNumber.config({ DECIMAL_PLACES : 50, ERRORS : false});
var pi = new BigNumber(0, 10),
x = new BigNumber(1, 10),
two = new BigNumber(2, 10),
four = new BigNumber(4, 10);
function iterate() {
pi = pi.plus(four.dividedBy(x));
x = x.plus(two);
pi = pi.minus(four.dividedBy(x));
x = x.plus(two);
$("#pi").text(pi.toPrecision(50));
}
$('button').click(iterate);
});
不幸的是,在计算上不可能防止小数位数可能无限的数字舍入
不过,有人可能会建议使用一些技巧,比如使用一个类
HugeNumber
,其对象是algarism的列表或数组,甚至是只包含数字的字符串,并在其中实现算术运算(当然是自己实现的)。除非考虑处理效率,否则这将是一个可接受的解决方案。可能类似的东西已经存在于一个插件中,甚至在某个内置类中,我从来都不需要它,所以我真的不知道。它只有一定数量的小数位,因为它只有一定数量的小数位。换句话说,JavaScript数学具有有限的精度。