Formatar um número flutuante em string em Python
-
Formate números flutuantes para uma largura fixa usando a especificação de formato e o método
format() - Formatar números flutuantes em uma lista para uma largura fixa
-
Formate um número flutuante para corrigir a largura usando o operador
%em Python -
Formate um número flutuante para uma largura fixa usando a função
round()em Python
Este artigo apresentará alguns métodos para formatar um número flutuante para uma largura fixa em Python.
Formate números flutuantes para uma largura fixa usando a especificação de formato e o método format()
Aqui, usaremos o processo de formatação normal por meio da especificação de formato para corrigir a largura dos números flutuantes.
Vamos criar uma variável num e atribuir um número flutuante a ela. Em seguida, imprimiremos o número flutuante no formato que precisamos. Vamos usar a função format() para obter o nosso resultado.
Códigos de exemplo:
# python 3.x
num = 0.02893574
print("{:.4f}".format(num))
Resultado:
0.0289
Aqui, .4f é chamado de especificação de formato, o que denota que a saída deve mostrar apenas quatro casas após o decimal. Se usássemos .5f em vez disso, obteríamos até cinco dígitos após a vírgula decimal. A string vazia antes dos dois pontos : é colocada de forma que o argumento fornecido para a função format() tome esse lugar. No programa acima, o argumento que fornecemos é num. Portanto, qualquer valor que tivermos em num será passado para a string vazia antes de : e formatado de acordo.
No python 3.6, também podemos usar f'{}' para obter a mesma Resultado:
#python 3.x
num = 0.02893574
print (f'{num:.4f}')
Resultado:
0.0289
Formatar números flutuantes em uma lista para uma largura fixa
Usamos sintaxes semelhantes para fixar a largura dos números flutuantes até um dígito específico após o decimal.
Primeiro, criaremos uma lista com vários números flutuantes. Então, usaremos o loop for para pegar cada item da lista e formatá-lo de acordo. Usaremos a variável numbers para representar os números dentro da lista. Iremos imprimir os números flutuantes na lista um por um com números fixos de dígitos após o decimal.
Código de exemplo:
# python 3.x
list = [18.292164, 52.452189, 999.1212732]
for numbers in list:
print("{:.3f}".format(numbers))
Resultado:
18.292
52.452
999.121
No código acima, cada número dentro da lista é enviado um a um dentro do loop for. O primeiro elemento da lista, ou seja, list[0], é atribuído à variável numbers e seu valor formatado, ou seja, 18.293, é impresso. Aconteceu porque executamos .3f, que representa dígitos até três casas decimais. Da mesma forma, o segundo elemento list[1] e o terceiro list[2] também são passados para o loop como variáveis numbers e são impressos de acordo.
Este programa é executado até que todos os elementos da lista sejam executados.
Usando o f'{}':
Código de exemplo:
A lista abaixo contém os mesmos itens do programa acima. Usaremos f'{}' em vez da função format() neste exemplo.
# python 3.x
list = [18.292164, 52.452189, 999.1212732]
for numbers in list:
print(f"{numbers:9.3f}")
Resultado:
18.292
52.452
999.121
Podemos ver isso quando obtivemos a saída quando usamos f'{}'. Também obtivemos a saída desejada de forma alinhada. Pela mesma razão, geralmente é melhor usar f'{}' se quisermos que os dígitos flutuantes após o decimal sejam alinhados.
Formate um número flutuante para corrigir a largura usando o operador % em Python
Também podemos definir uma largura fixa para um número flutuante com o uso do operador %v. O código pode ser semelhante à função printf() na programação C.
Iremos atribuir um número flutuante a uma variável num e imprimir o valor de num com dígitos decimais até uma largura fixa. Observe que ao passar o valor de num para a instrução de impressão com o especificador de formato %.4f, estamos usando %num. A falta de % antes de num será um erro de sintaxe.
Código de exemplo:
# python 3.x
num = 0.02893574
print("%.4f" % num)
Resultado:
0.0289
Aqui, o uso de %num nos permitiu imprimir o valor desejado sem qualquer função ou formatação de string.
Formate um número flutuante para uma largura fixa usando a função round() em Python
Também podemos usar a função round() para fixar o número de dígitos após a vírgula decimal. Esta função limita o número de dígitos após o ponto decimal no número de entrada. Ele também arredonda o dígito no qual o limite é definido para seu valor integral superior se o dígito for maior que o valor 5.
Vamos pegar um número de ponto flutuante e atribuí-lo a uma variável num. Quando imprimirmos, usaremos a função round() para limitar o número de dígitos após a vírgula decimal.
Código de exemplo:
# python 3.x
num = 2.37682
print(round(num, 3))
Resultado:
2.377
A sintaxe para a função round é round(number, digits). Aqui, o argumento number é obrigatório, enquanto o argumento digits é opcional. number também pode ser colocado como uma variável. Se nada for passado para o argumento digits, apenas a parte integral do number é considerada como resultado.
No programa acima, passamos o valor 2.37682 para o primeiro argumento num, e ele foi arredondado para 3 casas após a vírgula porque passamos o valor 3 para o segundo argumento dentro de round() método.