¿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 % valuessintaxis 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.formatpermite 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
esignifica que desea notación científica y.2quiere decir 2 dígitos después del punto. Entonces obtendrásx.xxE±nfuente
float(x)convertirá x en flotante.Nadie mencionó la forma abreviada del
.formatmé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,
%Easí 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.
4indica 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