避免在新的python字符串格式中舍入

避免在新的python字符串格式中舍入,python,string,format,Python,String,Format,我想在脚本中用新的python字符串格式语法替换旧的字符串格式行为,但是在处理浮点时如何避免舍入 旧版本 print ('%02d:%02d:%02d' % (0.0,0.9,67.5)) 收益率00:00:67 而我的(显然是错误的)翻译成了新的语法 print ('{0:0>2.0f}:{1:0>2.0f}:{2:0>2.0f}'.format(0.0,0.9,67.5)) 产量00:01:68 如何避免在此舍入并使用新格式语法获取旧输出?将参数显式转换为ints: &

我想在脚本中用新的python字符串格式语法替换旧的字符串格式行为,但是在处理浮点时如何避免舍入

旧版本

print ('%02d:%02d:%02d' % (0.0,0.9,67.5))
收益率
00:00:67

而我的(显然是错误的)翻译成了新的语法

print ('{0:0>2.0f}:{1:0>2.0f}:{2:0>2.0f}'.format(0.0,0.9,67.5))
产量
00:01:68


如何避免在此舍入并使用新格式语法获取旧输出?

将参数显式转换为
int
s:

>>> '{:02}:{:02}:{:02}'.format(int(0.0), int(0.9), int(67.5))
'00:00:67'
顺便说一句,如果使用Python 2.7+、Python 3.1+(自动编号),则不需要指定参数索引(
{0}
{1}
,…)。

规则很简单:

'%d' % 7.7         # truncates to 7
'%.0f' % 7.7       # rounds to 8
format(7.7, 'd')   # refuses to convert
format(7.7, '.0f') # rounds to 7
要完全控制演示文稿,可以将浮点预转换为整数。根据您的需要,有几种方法可以做到这一点:

>>> math.trunc(f) # ignore the fractional part
67
>>> math.floor(f) # round down
67
>>> math.ceil(f)  # round up
68
>>> round(f)      # round nearest
68

除了答案之外,还要检查以下内容:哎呀,您正在显式地转换为
int
:(我认为
格式
有一种截断小数部分的方法。