在python中,我希望使用数千个独立的十进制数字,并以正好2个十进制数字显示

在python中,我希望使用数千个独立的十进制数字,并以正好2个十进制数字显示,python,floating-point,type-conversion,Python,Floating Point,Type Conversion,考虑以下数字: 1000.10 1000.11 1000.113 我想用python将其打印出来,如下所示: 1,000.10 1,000.11 1,000.11 下面的转换几乎可以做到这一点,除了当小数点右边的第二个数字是零时,零被省略,因此数字不能正确对齐 这是我的尝试: for n in [1000.10, 1000.11, 1000.112]: nf = '%.2f' %n # nf is a 2 digit decimal number, but a string

考虑以下数字:

1000.10
1000.11
1000.113
我想用python将其打印出来,如下所示:

1,000.10
1,000.11
1,000.11
下面的转换几乎可以做到这一点,除了当小数点右边的第二个数字是零时,零被省略,因此数字不能正确对齐

这是我的尝试:

for n in [1000.10, 1000.11, 1000.112]:
    nf = '%.2f' %n   # nf is a 2 digit decimal number, but a string
    nff = float(nf)  # nff is a float which the next transformation needs 
    n_comma = f'{nff:,}' # this puts the commas in 
    print('%10s' %n_comma)

 1,000.1
1,000.11
1,000.11

有没有办法避免在第一个数字中省略结尾零?

您可以简单地使用
f'{n:,.2f}'
组合thusand分隔符和2位十进制数字格式说明符:

for n in [1000.10, 1000.11, 1000.112]:
    print(f'{n:,.2f}')
输出

1,000.10
1,000.11
1,000.11

您需要格式说明符
,.2f'
<如您所述,code>,执行千位逗号分隔,而
.2f
指定保留两位数字:

print([f'{number:,.2f}' for number in n])
输出:

['1,000.10', '1,000.11', '1,000.11']

您可以这样做:

num = 100.0
print(str(num) + "0")
因此,将数字打印为字符串加上结尾的0。 更新: 因此,它不会对所有数字都这样做,请尝试执行以下操作:

if num == 1000.10:
#add the zero
elif num == 1000.20:
#again, add the zero
#and so on and so on...

因此,如果数字末尾有一个零(其十进制值为.10、.20、.30等),则添加一个,如果没有,则不添加。

这肯定会起作用,但不像上面建议的使用格式说明符“,.2f”那样优雅。