Javascript Prevent Automatic Rounding
本问题已经有最佳答案,请猛点这里访问。
我想知道是否有任何方法可以阻止javascript自动舍入我的数字。我用格雷戈里·莱布尼兹级数编制了一个计算圆周率的程序。它只到一定数量的小数点。这是我的代码:
1 2 3 4 5 6 7 8 9 10 | 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位精度)的数字,您可以考虑使用类似于本问题中提到的库:是否有一个用于javascript的十进制数学库?
尤其是BigNumber库对于您的目的来说是有希望的。
下面是一个快速演示jfiddle:http://jsfiddle.net/h88ts/
请注意,小提琴正在BigNumber库中链接。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | $(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); }); |
不幸的是,在计算上不可能阻止对具有无限小数位的数字进行舍入。
不过,有一些黑客可以建议,比如有一个类