如何使用 f 字符串跳过小数中的尾随零

Lor*_*ena 7 python format python-3.x f-string

我想在我的 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
Run Code Online (Sandbox Code Playgroud)

第一个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
Run Code Online (Sandbox Code Playgroud)

我尝试过的一种方法是,f'{i/1000:.2f}'.strip('.0')但我想知道是否有更好的方法。

编辑 :

在我的实际代码中,如果i100000,那么分母也将是 100000(按 顺序的最小数字i),换句话说,我的代码中的分母将始终是这样的,即 i// 分母将始终产生一个数字。

Moi*_*dri 5

如果你的字符串只有浮点数,那么你可以使用str.rstrip()(而不是str.strip()你现在拥有的)。'0'另外,您需要首先使用,然后使用'.'like 对其进行链式调用,.rstrip('0').rstrip('.')以处理带有尾随零的整数,例如10000

但是,如果您的字符串中可以有其他字符,并且您0只想删除数字,那么您可以使用嵌套的f 字符串

>>> f"{f'{1002/1000:.2f}'.rstrip('0').rstrip('.')} number"
'1 number'

>>> f"{f'{1009/1000:.2f}'.rstrip('0').rstrip('.')} number"
'1.01 number'

>>> f"{f'{1000:.2f}'.rstrip('0').rstrip('.')} number"
'1000 number'
Run Code Online (Sandbox Code Playgroud)