在python中,我要成千上万个独立的十进制数字并精确显示2个十进制数字

时间:2019-05-18 00:24:00

标签: 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
    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

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

3 个答案:

答案 0 :(得分:1)

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

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

输出:

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

答案 1 :(得分:0)

You can simply use f'{n:,.2f}' to combine the thusand separator and the 2 decimal digits format specifiers:

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

Outputs

1,000.10
1,000.11
1,000.11

答案 2 :(得分:0)

您也许可以这样做:

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等),则加1,否则不加。