我正在处理的一个简单问题是花时间在几秒钟内跑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