我有一个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)