Como posso exibir isso:
Decimal ('40800000000.00000000000000') como '4.08E + 10'?
Eu tentei isso:
>>> '%E' % Decimal('40800000000.00000000000000')
'4.080000E+10'
Mas tem esses 0 extras.
python
string-formatting
Greg
fonte
fonte
Respostas:
No seu '40800000000.00000000000000', existem muitos zeros mais significativos que têm o mesmo significado que qualquer outro dígito. É por isso que você precisa dizer explicitamente onde deseja parar.
Se você deseja remover todos os zeros à direita automaticamente, tente:
fonte
format % values
sintaxe ainda estar sendo usada mesmo na biblioteca padrão do Python 3, acredito que ela seja tecnicamente reprovada no Python 3, ou pelo menos não no método de formatação recomendado, e a sintaxe recomendada atual, começando no Python 2.6, seria'{0:.2E}'.format(Decimal('40800000000.00000000000000'))
( ou'{:.2E}'
no Python 2.7+). Embora não seja estritamente útil para essa situação, devido aos caracteres adicionais, sem funcionalidade adicional,str.format
permite uma mistura / reorganização / reutilização mais complexa de argumentos de formato.format
. É mais jazzístico .Aqui está um exemplo usando a
format()
função:Em vez de formato, você também pode usar strings-f :
documentação oficial
proposta de formato original ()
fonte
f"{Decimal('40800000000.00000000000000'):.2E}"
Dado o seu número
A partir do Python 3,
é a maneira recomendada de fazer isso.
e
significa que você deseja notação científica e.2
significa que você deseja 2 dígitos após o ponto. Então você teráx.xxE±n
fonte
float(x)
isso converterá x em float.Ninguém mencionou a forma abreviada do
.format
método:Precisa de pelo menos Python 3.6
(Eu acredito que é o mesmo que Cees Timmerman, apenas um pouco mais curto)
fonte
{num:E}
, onde, por exemplo, num = 40800000000.00000000000000Consulte as tabelas da formatação de string do Python para selecionar o layout de formato apropriado. No seu caso é
%.2E
.fonte
Meus decimais são grandes demais,
%E
então eu tive que improvisar:Aqui está um exemplo de uso:
fonte
"{:.2e}".format(n)
retorna'3.39e+7800'
no Python 3.3.2 (v3.3.2: d047928ae3f6, 16 de maio de 2013, 00:06:53) [MSC v.1600 de 64 bits (AMD64)] no win32.Isso funcionou melhor para mim:
fonte
Esta é uma lista consolidada das respostas e comentários "simples" .
PITÃO 3
Ou sem
IMPORT
'sComparando
Portanto, para o Python 3, você pode alternar entre os três por enquanto.
Meu favorito:
fonte
Eu prefiro o modo Python 3.x.
4
indica quantos dígitos são mostrados na parte flutuante.fonte
Para converter uma decimal para notação científica sem precisar especificar a precisão na sequência de formatação e sem incluir zeros à direita, estou usando atualmente
Para manter os zeros à direita, basta remover o
normalize()
.fonte
Aqui está o mais simples que eu poderia encontrar.
('E' não diferencia maiúsculas de minúsculas. Você também pode usar '.2e')
fonte
fonte