我该如何解决这些计算?

时间:2013-01-21 11:04:17

标签: javascript

我正在取一个数字,除以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)));

2 个答案:

答案 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));

JSFiddle

答案 1 :(得分:0)

您可以使用像javascript-bignumgmp.js这样的JavaScript bignum实现来获得任意精度。如果你想使用gmp.js,你必须用C / C ++重写你的应用程序或者为JavaScript编写gmp.js绑定。作为回报,您将获得GNU GMP经过实战考验的可靠性和最佳算法效率。