我有一个函数,可以将毫秒转换为h:m:s.ms格式,并且可以正常工作。
但是我有一个问题,那就是负数。
代码
def timer(ms):
s = ms / 1000
m, s = divmod(s, 60)
h, m = divmod(m, 60)
#d,h = divmod(h,24)
d = ms % 1000
if h > 0:
return "{0}:{1}:{2}.{3}".format(int(h), str(int(m)).zfill(2), str(int(s)).zfill(2), str(int(d)).zfill(3))
elif m > 0:
return "{0}:{1}.{2}".format(int(m), str(int(s)).zfill(2), str(int(d)).zfill(3))
else:
return "{0}.{1}".format(int(s), str(int(d)).zfill(3))
print(timer(13700))
# returns 13.700 as expected
-
当我给出负毫秒数时,例如-13700
print(timer(-13700))
它返回
59:46.300
但是我想要的预期输出是 -13.700
我该如何解决?
答案 0 :(得分:4)
最简单的方法是检测负输入,获取其绝对值,然后在返回-
时将它们放在前面:
def timer(ms):
if ms < 0:
return "-" + timer(abs(ms))
...
答案 1 :(得分:1)
一种彻底解决此问题的好方法是:
因此修改您的代码将如下所示:
def timer(ms):
sign = ms//abs(ms) if ms != 0 else 0 # <--- Step 1
ms = abs(ms) # <--- Step 2
s = ...
...
if sign == -1: # <--- Step 3
output = "-"+output
return output