1

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

sec = result % 60;

除非小数部分为 0.5(即 60.5、75.5 等),否则这不会按预期工作。任何其他小数都会给我一个结果,该结果与需要 12 位以上有效数字才能表示的结果不同。

例如, 64.55 % 60 结果是 4.5499999999999997。

我知道一个简单的解决方案是只拆分小数并将结果与​​小数位连接起来,但这只是让我感兴趣。我做错了什么,有没有单独使用MOD解决这个问题的好方法?

4

1 回答 1

1

因此,假设您的值为 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
于 2013-05-09T15:28:51.090 回答