我怎样才能得到MOD在Javascript中正确返回小数

How can I get MOD in Javascript to return a decimal correctly?

本文关键字:Javascript 小数 返回 MOD      更新时间:2023-09-26

我正在处理的一个简单问题是花时间在几秒钟内跑300米,并将它们转换为字符串,使其读为"9:99.99"。为了获得秒数,我执行以下MOD操作:

sec = result % 60;

除非小数部分为0.5(即60.5,75.5等),否则不会像预期的那样工作。任何其他小数给出的结果都需要12位以上的有效数字来表示。

例如,64.55 % 60的结果是4.549999999999999997。

我知道一个简单的解决方案是在小数点上进行拆分,然后将结果与小数点连接起来,但这只是引起了我的兴趣。我做错了什么,是否有一个很好的方法来解决这个使用MOD单独?

那么让我们假设您的值为921.856秒。

var value = 921.856;
var minutes = Math.floor(value/60),  // 15        
    seconds = value % 60,            // 21.856
    time = minutes + ":" + seconds.toFixed(2);  // 15:21.86

不舍入:

time = minutes + ":" + (Math.floor(seconds * 100)/100).toFixed(2); // 15:21.85