В Python я хочу, чтобы тысячи отдельных десятичных чисел и отображать ровно 2 десятичных знака - PullRequest
1 голос
/ 18 мая 2019

Рассмотрим следующие числа:

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 ]

1 голос
/ 18 мая 2019

Требуется спецификатор формата ',.2f'. ,, как вы заметили, выполняет разделение запятыми тысяч, а .2f указывает, что две цифры должны быть сохранены:

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

Выход:

['1,000.10', '1,000.11', '1,000.11']
0 голосов
/ 18 мая 2019

Вы можете сделать это так:

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 и т. Д.), Добавьте его, а если нет, то нет.

0 голосов
/ 18 мая 2019

Вы можете просто использовать f'{n:,.2f}' для объединения разделителя таким образом и спецификаторов формата из двух десятичных цифр:

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

Выходы

1,000.10
1,000.11
1,000.11
...