Aquí está mi código:
x = 1.0
y = 100000.0
print x/y
Mi cociente se muestra como 1.00000e-05
.
¿Hay alguna forma de suprimir la notación científica y hacer que se muestre como
0.00001
? Voy a usar el resultado como una cadena.
python
floating-point
Mate
fuente
fuente
Respuestas:
pero necesitas manejar la precisión tú mismo. p.ej,
solo mostrará ceros.
los detalles están en los documentos
O para Python 3 el formato antiguo equivalente o el formato de estilo más nuevo
fuente
Usando la versión más nueva
''.format
(también recuerde especificar cuántos dígitos después de la.
que desea mostrar, esto depende de qué tan pequeño sea el número flotante). Ver este ejemplo:como se muestra arriba, ¡el valor predeterminado es de 6 dígitos! Esto no es útil para nuestro ejemplo de caso, por lo que podríamos usar algo como esto:
Actualizar
A partir de Python 3.6, esto se puede simplificar con el nuevo literal de cadena formateado , de la siguiente manera:
fuente
f"{a:.{precision}f}"
Con las versiones más recientes de Python (2.6 y posteriores), puede usar
''.format()
para lograr lo que @SilentGhost sugirió:fuente
>>> print('{:f}'.format(0.000000123))
0.000000
'{0:.10f}'
Otra opción, si está utilizando pandas y desea suprimir la notación científica para todos los flotadores, es ajustar las opciones de los pandas.
fuente
La mayoría de las respuestas anteriores requieren que especifique precisión. Pero, ¿qué pasa si desea mostrar flotantes como este, sin ceros innecesarios:
numpy
tiene una respuesta:np.format_float_positional
fuente
Esto funcionará para cualquier exponente:
fuente
Esto está usando la respuesta del Capitán Pepino , pero con 2 adiciones.
1) permitir que la función obtenga números de notación no científica y simplemente devolverlos como están (para que pueda arrojar una gran cantidad de información de que algunos de los números son 0.00003123 vs 3.123e-05 y todavía tienen función de trabajo.
2) soporte agregado para números negativos. (en función original, un número negativo terminaría como 0.0000-108904 desde -1.08904e-05)
fuente
Además de la respuesta de SG, también puede usar el módulo Decimal:
fuente
Si es un,
string
entonces use el incorporadofloat
para hacer la conversión, por ejemplo:print( "%.5f" % float("1.43572e-03"))
respuesta:0.00143572
fuente
Como este es el mejor resultado en Google, publicaré aquí después de no encontrar una solución para mi problema. Si desea formatear el valor de visualización de un objeto flotante y mantenerlo como flotante, no como una cadena, puede usar esta solución:
Cree una nueva clase que modifique la forma en que se muestran los valores flotantes.
Puede modificar la precisión usted mismo cambiando los valores enteros en
{:f}
fuente
Usando 3.6.4, estaba teniendo un problema similar que aleatoriamente, un número en el archivo de salida se formateará con notación científica al usar esto:
Todo lo que tuve que hacer para solucionarlo fue agregar 'f':
fuente
A partir de 3.6 (probablemente también funciona con versiones 3.x ligeramente más antiguas), esta es mi solución:
El propósito de
precision
cálculo es garantizar que tengamos suficiente precisión para mantenernos fuera de la notación científica (la precisión predeterminada sigue siendo 6).El
dec_precision
argumento agrega precisión adicional para usar con puntos decimales. Como esto hace uso deln
formato, no se agregarán ceros insignificantes (a diferencia de losf
formatos).n
también se encargará de representar enteros redondos sin un decimal.n
requierefloat
entrada, por lo tanto, el elenco.fuente