我有一个javascript函数,可将英尺转换为可用的对象,该对象将把总英尺转换成英尺/英寸/分数。

在下面的示例中,小数部分应为零,我的英寸应为4

可以说我有以下几点。

var inches = 40;


现在,当我像下面这样调用下面的函数时,unPackDecimalFeet(40/12);

  unPackDecimalFeet: function (feetInchFraction) {

        var inchFraction = (feetInchFraction - ~~feetInchFraction) * 12;
        return {
            feet: ~~feetInchFraction,
            inch: ~~inchFraction,
            fraction: inchFraction - ~~inchFraction
        };
    }


我的返回值如下。

feet: 3
fraction: 0.9999999999999964
inch: 3


**以上返回值应为。

feet: 3
fraction: 0
inch: 4


我将如何处理脚部以获得正确的返回值?

最佳答案

我会说一开始将其乘以1000,然后进行计算,然后再除以1000。 IEEE浮点算法是这里的问题。如果需要更多计算,请查看BigInteger库。 (有时是BigInt)

10-04 22:18