避免在新的python字符串格式中舍入
我想在脚本中用新的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: &
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
:(我认为格式
有一种截断小数部分的方法。