我正在处理的一个简单问题是花时间在几秒钟内跑完 300m 并将它们转换为字符串,使其显示为“9:99.99”。为了获得秒数,我执行以下 MOD 操作:
sec = result % 60;
除非小数部分为 0.5(即 60.5、75.5 等),否则这不会按预期工作。任何其他小数都会给我一个结果,该结果与需要 12 位以上有效数字才能表示的结果不同。
例如, 64.55 % 60 结果是 4.5499999999999997。
我知道一个简单的解决方案是只拆分小数并将结果与小数位连接起来,但这只是让我感兴趣。我做错了什么,有没有单独使用MOD解决这个问题的好方法?