为了同步我的iPod和我的本地音乐存储库,我使用其元数据为每个音轨创建了一个唯一键。独特的轨道由轨道的以下元数据字段组成: 艺术家,专辑,曲目编号,持续时间。 iPod以毫秒为单位保存曲目的持续时间,但我的本地存储库会在几秒钟内保存它。例如:iPod上的437590毫秒是我本地存储库中的438秒。
当我将ipod的音轨持续时间除以1000时,我得到437.我尝试使用round()
,但round (b.tracklen/1000)
打印437
。
如果没有匹配但是这是一个糟糕的解决方案,我可以通过检查math.ceil()
,math.floor()
获取iPod持续时间来解决这个问题。
解决此问题的最佳方法是什么?
答案 0 :(得分:6)
当您除以1000而不是1000.0
时,round
来电显示错误的结果
>>> round(437590/1000.0)
438.0
答案 1 :(得分:2)
您正在体验Python 2的整数除法。当你划分两个整数时,Python(以及许多其他语言)会丢弃其余的整数。正如Dogbert指出的那样,你想要除以浮点而不是整数。
答案 2 :(得分:0)
舍入整数除法的结果非常简单:(n+(d/2))/d
。在你的情况下:
def RoundedDivide(value, divisor):
return (value + (divisor/2)) / divisor
>>> RoundedDivide(437590, 1000)
438
答案 3 :(得分:-2)
老实说,我认为你已经把它钉在了地板和ceil电话上,但为了这么简单,你可能想做一下((ipodtime / 1000)+1)== localrepostime来检查相等性,因为ipod时间好像是向下舍入的无论如何。