我需要将一个值打印到日志文件中。我的值是0-1范围内的浮动。该值的格式必须为4个十进制数字,且不包含整数部分。因此0.42将被打印为4200,并且之前带有一些文本。
这是我目前的方法:
value = 0.42
print('my value is ' + f'{value:.4f}'[2:])
某种程度上看起来不太好,所以问题是:我可以以避免避免连接两个字符串的方式使用浮点格式吗?
print(f'my value is {value:-1.4f}') # this looks nicer but doesn't do what I want
答案 0 :(得分:3)
这可能有效:
value = 0.42
print('my value is ' + f'{int(10000*value):4d}')
# my value is 4200
首先将您的float
转换为int
,然后使用整数格式:4d
。
或者您可能想先round
。
答案 1 :(得分:0)
您的代码非常好,您可以保持原样。还有其他方法,但是我不确定这是否很好。
value = 0.42
print(f'my value is {str(value)[2:]:0<4}')
答案 2 :(得分:0)
str
的争用获取print
的参数没有错,但是,如果不允许这样做,则可以使用以下解决方法:
value = 0.42
print('my value is',f'{value:.4f}'[2:])
输出:
my value is 4200
请注意,我从my values is
删除了最后一个空格,因为默认情况下print
在收到的参数之间添加了空格。
答案 3 :(得分:0)
谢谢您的建议。综上所述,我在原始解决方案中不喜欢的是乍一看并不清晰。 我认为由hiro主人公发布的稍微修改的版本会更好:
print(f'my value is {int(10000*value):04d}')
不需要拆分字符串+如果数字较小,我需要添加add'04d'以打印前导零。