2

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

2 回答 2

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

于 2013-01-21T11:16:18.100 回答
0

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

于 2013-01-21T11:11:53.947 回答