我在 python 中有一个数组,其中包含一组值,其中一些是
2.32313e+07
2.1155e+07
1.923e+07
11856
112.32
如何将指数格式转换为十进制格式
附加:在 UNIX 中使用 awk 打印时,有没有办法可以将指数直接转换为十进制?
我想你有一个列表而不是一个数组,但在这里它并没有太大的区别;在 2.6 及更早版本的 Python 中,类似于:
>>> 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
在 2.6 或更高版本中,该.format
方法。我想你知道数字本身,作为数字,不是任何“格式”——它是你通过格式化数字获得的字符串,例如输出,是某种格式的。顺便说一句,它的变体%f
可以让你控制小数位数、宽度、对齐方式等——如果没有你的进一步规范,很难准确地建议你可能想要什么。
在 awk 中,您可以使用printf。
您可以使用 locale.format() 格式化您的数字以进行输出。这具有额外的好处,即与数字表示中可能预期的任何特定于语言环境的约定保持一致。如果您想在执行输出的特定位置完全控制,最好使用print "format" % vars... variant。
例子:
>>> import locale
>>> locale.setlocale(locale.LC_ALL, "")
'C/UTF-8/C/C/C/C'
>>> locale.format("%f", 2.32313e+07, 1)
'23231300.000000'
在回答您问题的最后一部分时,awk
可以使用相同的printf
格式:
awk '{printf "%f\n",$1}' exponential_file
其中exponential_file 包含:
2.32313e+07
2.1155e+07
1.923e+07
11856
112.32
您可以将其转换为变量以供以后使用。这是一个简单的例子:
awk '{n = sprintf("%f\n",$1); print n * 2}' exponential_file