¿Cómo puedo mostrar esto?
¿Decimal ('40800000000.00000000000000') como '4.08E + 10'?
He intentado esto:
>>> '%E' % Decimal('40800000000.00000000000000')
'4.080000E+10'
Pero tiene esos 0 extra.
¿Cómo puedo mostrar esto?
¿Decimal ('40800000000.00000000000000') como '4.08E + 10'?
He intentado esto:
>>> '%E' % Decimal('40800000000.00000000000000')
'4.080000E+10'
Pero tiene esos 0 extra.
Respuestas:
En su '40800000000.00000000000000' hay muchos ceros más significativos que tienen el mismo significado que cualquier otro dígito. Es por eso que tienes que decir explícitamente dónde quieres parar.
Si desea eliminar todos los ceros finales automáticamente, puede intentar:
fuente
format % values
sintaxis todavía se usa incluso dentro de la biblioteca estándar de Python 3, creo que está técnicamente en desuso en Python 3, o al menos no el método de formato recomendado, y la sintaxis recomendada actual, comenzando con Python 2.6, sería'{0:.2E}'.format(Decimal('40800000000.00000000000000'))
( o'{:.2E}'
en Python 2.7+). Si bien no es estrictamente útil para esta situación, debido a los caracteres adicionales para no agregar funcionalidad,str.format
permite una mezcla / reorganización / reutilización más compleja de los argumentos de formato.format
. Es más jazzy .Aquí hay un ejemplo usando la
format()
función:En lugar de formato, también puede usar cadenas f :
documentación oficial
propuesta de formato original ()
fuente
f"{Decimal('40800000000.00000000000000'):.2E}"
Dado su número
A partir de Python 3,
es la forma recomendada de hacerlo
e
significa que desea notación científica y.2
quiere decir 2 dígitos después del punto. Entonces obtendrásx.xxE±n
fuente
float(x)
convertirá x en flotante.Nadie mencionó la forma abreviada del
.format
método:Necesita al menos Python 3.6
(Creo que es lo mismo que Cees Timmerman, solo un poco más corto)
fuente
{num:E}
, donde, por ejemplo, num = 40800000000.00000000000000Consulte las tablas del formato de cadena Python para seleccionar el diseño de formato adecuado. En tu caso lo es
%.2E
.fuente
Mis decimales son demasiado grandes,
%E
así que tuve que improvisar:Aquí hay un ejemplo de uso:
fuente
"{:.2e}".format(n)
regresar'3.39e+7800'
en Python 3.3.2 (v3.3.2: d047928ae3f6, 16 de mayo de 2013, 00:06:53) [MSC v.1600 64 bit (AMD64)] en win32.Esto funcionó mejor para mí:
fuente
Esta es una lista consolidada de las respuestas y comentarios "simples" .
PITÓN 3
O sin
IMPORT
'sComparando
Entonces, para Python 3, puedes cambiar entre cualquiera de los tres por ahora.
Mi favorito:
fuente
Prefiero Python 3.x forma.
4
indica cuántos dígitos se muestran en la parte flotante.fuente
Para convertir un decimal a notación científica sin necesidad de especificar la precisión en la cadena de formato, y sin incluir ceros finales, actualmente estoy usando
Para mantener los ceros a la izquierda, simplemente elimine el
normalize()
.fuente
Aquí está el más simple que pude encontrar.
('E' no distingue entre mayúsculas y minúsculas. También puede usar '.2e')
fuente
fuente