Pregunta

I tiene una matriz en pitón que contiene un conjunto de valores, algunos de ellos son

2.32313e + 07

2.1155e + 07

1.923e + 07

11856

112,32

¿Cómo puedo convertir los formatos exponenciales al formato decimal

adicional:? ¿Hay alguna manera de convertir el exponente directamente a decimal cuando se imprime en UNIX con awk

¿Fue útil?

Solución

Me imagine que tiene una lista en lugar de una matriz, pero aquí no hace mucha diferencia; en 2.6 y versiones anteriores de Python, algo como:

>>> L = [2.32313e+07, 2.1155e+07, 1.923e+07, 11856, 112.32]
>>> for x in L: print '%f' % x
... 
23231300.000000
21155000.000000
19230000.000000
11856.000000
112.320000

y en 2.6 o posterior, el método .format. Me imagino que son conscientes de que los números en sí, como números, no se encuentran en ninguna "formato" - es la cadenas se obtienen mediante el formateo de los números, por ejemplo, para la salida, que son en algún formato. Por cierto, las variantes en que %f puede permitirle controlar el número de decimales, ancho, alineación, etc -. Duras para sugerir exactamente lo que es posible que desee sin más especificaciones de usted

En awk, puede utilizar printf .

Otros consejos

Puede utilizar locale.format () para dar formato a los números para la salida. Esto tiene la ventaja adicional de ser consistentes con los convenios específicos de la configuración regional que se podría esperar en la presentación de los números. Si desea tener un control completo en el lugar específico en el que hacer la salida, que estaría mejor con el Imprimir "formato" % Vars ... variante .

Ejemplo:

>>> import locale 
>>> locale.setlocale(locale.LC_ALL, "")
'C/UTF-8/C/C/C/C'
>>> locale.format("%f", 2.32313e+07, 1)
'23231300.000000'

En respuesta a la última parte de su pregunta, awk puede utilizar el mismo formato printf:

awk '{printf "%f\n",$1}' exponential_file

Cuando exponential_file contiene:

2.32313e+07
2.1155e+07
1.923e+07
11856
112.32

Se puede hacer la conversión en una variable para su uso posterior. Aquí es un simple ejemplo:

awk '{n = sprintf("%f\n",$1); print n * 2}' exponential_file
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top