我想在我的f字符串中设置一个精度,但我不想在小数部分设置尾随的零
i = 1002
print(f'{i/1000:.2f}') # 1.00 but this must be 1
i = 1009
print(f'{i/1000:.2f}') # 1.01, this is correct
第一个print
必须是1
,我的预期行为可以在第二个print
中看到,它是1.01
我尝试了:g
,但第一个print
有效,但第二个失败
i = 1000
print(f'{i/1000:.2g}') # 1, this is correct but
i = 1009
print(f'{i/1000:.2g}') # 1, but this must be 1.01
我试过的一种方法是f'{i/1000:.2f}'.strip('.0')
,但我想知道是否有更好的方法
编辑:
在我的实际代码中,如果i
是100000
,那么分母也将是100000(在i
的顺序中最小的数字),换句话说,我代码中的分母将始终是这样的:i//分母将始终产生一个数字
如果字符串只有浮点数,那么可以使用^{} (而不是现在使用的^{} )。此外,您需要首先使用
'0'
对它进行链式调用,然后使用'.'
like.rstrip('0').rstrip('.')
来处理带有尾随零的整数,如10000
但是,如果您可以在字符串中包含其他字符,并且只想为数字去除
0
,则可以使用嵌套的f-string作为:您必须使用两种不同格式的字符串和
round
来检测何时使用它们:这将产生:
请参阅Format Specification Mini-Language
取决于你的品味,是使用我建议的
round
方法还是你提到的strip
方法。如果您以代码应该清晰、简洁和可维护的方式理解Pythonic,那么我将使用round
方法处理两种格式的字符串,因为这对于未来的开发人员来说是非常可读/可理解的相关问题 更多 >
编程相关推荐