繁体   English   中英

在python中将指数转换为十进制

[英]convert exponential to decimal in python

我在python中有一个包含一组值的数组,其中一些是

2.32313e + 07

2.1155e + 07

1.923e + 07

11856

112.32

如何将指数格式转换为十进制格式

附加:在使用awk在UNIX中打印时,有没有办法可以将指数直接转换为十进制?

我想你有一个列表而不是一个数组,但在这里并没有太大的区别; 在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方法。 我想你是知道数字本身,作为数字,不是任何“格式” - 它是你通过格式化数字获得的字符串 ,例如输出,以某种格式。 BTW, %f上的变体可以让你控制小数位数,宽度,对齐等 - 如果没有你的进一步说明,很难准确地建议你想要什么。

在awk中,您可以使用printf

您可以使用locale.format()格式化输出的数字。 这具有额外的好处,即与数字表示中可能预期的任何特定于语言环境的约定一致。 如果您想要在输出的特定位置进行完全控制,那么您最好使用打印“格式”%vars ... 变体

例:

>>> 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM