我正在取一个数字,除以100,然后乘以100,使其恢复原始值。但是,有些返回的值稍微偏离。
var num = 57,
num = num / 100,
// this should return the number to the original
// however in this example it returns 56.99999999999999
num = num * 100;
这是一个小提琴:http://jsfiddle.net/njsdW/
事实上,我想要做的就是在数字前添加两个0,但我并不总是确定十进制的位置。
编辑:我的解决方案:
var num = 57,
num = (parseFloat((num / 100).toPrecision(15)));
// this should return the number to the original
num = (parseFloat((num * 100).toPrecision(15)));
答案 0 :(得分:1)
您必须保存号码的精确度,并在除以100
后将其恢复prec = num.length;
// adjust for decimal point
if (num.indexOf('.') != -1)
prec--;
// adjust for leading zero
if (num < 1)
prec--;
num /= 100;
self.find('h2').append(num.toPrecision(prec));
答案 1 :(得分:0)
您可以使用像javascript-bignum或gmp.js这样的JavaScript bignum实现来获得任意精度。如果你想使用gmp.js,你必须用C / C ++重写你的应用程序或者为JavaScript编写gmp.js绑定。作为回报,您将获得GNU GMP经过实战考验的可靠性和最佳算法效率。