Exibir um flutuador com duas casas decimais em Python


136

Eu tenho uma função que aceita argumentos de flutuação (geralmente números inteiros ou decimais com um dígito significativo) e preciso gerar os valores em uma string com duas casas decimais (5 -> 5,00, 5,5 -> 5,50, etc.). Como posso fazer isso em Python?

Respostas:


148

Você pode usar o operador de formatação de string para isso:

>>> '%.2f' % 1.234
'1.23'
>>> '%.2f' % 5.0
'5.00'

O resultado do operador é uma string, para que você possa armazená-lo em uma variável, imprimir etc.


273

Como este post pode estar aqui por um tempo, vamos também apontar a sintaxe do python 3:

"{:.2f}".format(5)

9
Apenas para completar, se as casas decimais é variável, por exemplo d=3, em seguida, a sintaxe é"{:.{}f}".format(5, d)
jurajb

74

formatação de string f :

Isso era novo no Python 3.6 - a string é colocada entre aspas, como de costume, precedida f'...da mesma maneira que você faria r'...para uma string bruta. Em seguida, você coloca o que deseja colocar em sua string, variáveis, números, chaves internas f'some string text with a {variable} or {number} within that text'- e o Python avalia como nos métodos anteriores de formatação de strings, exceto que esse método é muito mais legível.

>>> a = 3.141592
>>> print(f'My number is {a:.2f} - look at the nice rounding!')

My number is 3.14 - look at the nice rounding!

Você pode ver neste exemplo que formatamos com casas decimais de maneira semelhante aos métodos de formatação de string anteriores.

NB apode ser um número, variável ou mesmo uma expressão, por exemplo f'{3*my_func(3.14):02f}'.

No futuro, com o novo código, prefiro as strings f em vez dos métodos% s ou str.format () comuns, pois as strings f podem ser muito mais legíveis e geralmente muito mais rápidas .


6

Formatação de string:

print "%.2f" % 5

1
Mas tudo isso são strings, então não iam capaz de fazer quaisquer operações matemáticas sobre eles
itsaruns

@itsaruns Adicionar casas decimais vazias não faz diferença se você apenas precisar executar operações matemáticas nelas. Você pode estar procurando math.floor, math.ceilouround
Steen Schütt 17/04

5

Usando formatação de string python.

>>> "%0.2f" % 3
'3.00'

4

Formatação de string:

a = 6.789809823
print('%.2f' %a)

OU

print ("{0:.2f}".format(a)) 

A função Round pode ser usada:

print(round(a, 2))

O bom de round () é que podemos armazenar esse resultado em outra variável e usá-lo para outros fins.

b = round(a, 2)
print(b)

5
Voto negativo para round. Não deve ser usado apenas para fins de exibição .
wim 21/02

@ wim Eu respeito o seu comentário, mas essas respostas são apenas para satisfazer os requisitos de alguém.
debaonline4u 23/02

2
@ debaonline4u wim está certo. round(5.0001, 2)-> 5.0, não'5.00'
wjandrea 14/06


3

Se você realmente deseja alterar o próprio número, em vez de apenas exibi-lo de forma diferente, use format ()

Formate-o com 2 casas decimais:

format(value, '.2f')

exemplo:

>>> format(5.00000, '.2f')
'5.00'

0

Eu sei que é uma pergunta antiga, mas eu estava lutando para encontrar a resposta. Aqui está o que eu vim com:

Python 3:

>>> num_dict = {'num': 0.123, 'num2': 0.127}
>>> "{0[num]:.2f}_{0[num2]:.2f}".format(num_dict) 
0.12_0.13

3
Olá, bem-vindo ao Stack Overflow. Ao responder a uma pergunta que já tem muitas respostas, adicione algumas dicas adicionais sobre por que a resposta que você está fornecendo é substantiva e não simplesmente ecoando o que já foi examinado pelo pôster original. Isso é especialmente importante nas respostas "somente código", como as que você forneceu.
CHB


-1

Se você deseja obter um valor de ponto flutuante com duas casas decimais limitadas no momento da chamada de entrada,

Veja isso ~

a = eval(format(float(input()), '.2f'))   # if u feed 3.1415 for 'a'.
print(a)                                  # output 3.14 will be printed.

Por que evaluma corda quando você poderia apenas round? De qualquer forma isso não mesmo trabalhar corretamente, pois se você alimentar em 5, você obtém 5.0em vez de 5.00como OP quer.
wjandrea 14/06

Isso também não funciona para nane inf.
wjandrea 14/06
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.