Python float vs decimal

Para adicionar um 0 ao seu float f, basta fazer

str (f) + "0"

ou, para garantir que haja exatamente duas casas decimais, você pode formatar:

"{0: .2f}". Formato (f)

essas duas expressões retornam cadeias, pois o valor flutuante de 24,3 é igual ao valor flutuante de 24,30.

Pergunta interessante!

Na verdade, o float é um formato de armazenamento, por isso não se importa em exibir as casas decimais.

É assim que você mostra duas casas decimais:

number = 24.3 # Este é um flutuadorimpressão (número)=> 24,3print ("{:. 2f}". formato (número)) # .2f significa 2 casas decimais=> 24.30 # Lá vai você

Observe que a variável numérica ainda é um valor flutuante com um valor de 24.3:

impressão (número)=> 24,3

O número nunca foi alterado, apenas exibido (como uma sequência de caracteres) de acordo com a regra de formatação “{: .2f}”, que significa “Mostrar pelo menos 2 casas decimais”. Verifica a

documentação de parâmetros de formato

.

PS:

tenha cuidado com carros alegóricos.

Nem todos os números podem ser representados pelo formato float! Por exemplo,

0,1 não pode ser representado exatamente

. Embora o Python faça alguns arredondamentos e o código acima deva funcionar de qualquer maneira. Use o

decimal

módulo se você tiver problemas.

Observe que estes são equivalentes: 24.3 e 24.30. São representações diferentes da mesma quantidade numérica.

Se você está preocupado apenas com como eles são exibidos ou impressos, basta usar as opções de formatação de string do Python. Isso implica o operador% string ou o

.formato()

método em strings. Há um site dedicado a esse tópico:

Usando% e .format () para um ótimo bem!

Tecnicamente, isso é "renderizar" em vez de "converter".

Vá além de como eles são transformados em strings, comece entendendo que o literal, 24.3, seria válido como um número "real" (ponto flutuante) no intérprete do Python. Você pode usar o

decimal - aritmética decimal de ponto fixo e ponto flutuante

módulo (

decimal

para Python3) instanciar

Decimal

objetos e especifique o número de dígitos significativos.

O módulo substitui as operações numéricas nos valores decimais para manter a precisão específica e executar o arredondamento de acordo com várias políticas padrão.

Em geral, os programadores devem ter cuidado ao usar tipos de dados de ponto flutuante. Antes de realizar qualquer trabalho sério de engenharia ou científico com números reais, recomendo que dedique algum tempo a aprender

O que todo programador deve saber sobre aritmética de ponto flutuante

e leia isso

StackOoverflow: Resposta de Chris Jester-Young: A matemática de ponto flutuante está quebrada?

Além disso, você pode olhar para uma das minhas outras respostas para uma pergunta semelhante:

Resposta de Jim Dennis para No Python, como arredondar um flutuador em duas casas decimais?