Python浮点格式

时间:2013-09-10 00:23:31

标签: python floating-point format

我已经看到了一些关于这个的问题,但我读过的都没有帮助我实际理解为什么我要做的就是失败。

所以我有一堆浮点值,它们有不同的精度。有些是0.1,其他是1.759374等。我想格式化它们所有的形式为“+ 0.0000000E + 00”我试着做了

number = '%1.7f' % oldnumber

但这不起作用。我以为我告诉它要做的是“小数点后一位数,后浮点数”,但它不起作用。我并没有真正得到文档中的示例,这些示例似乎甚至不打扰“小数点前后”问题,而且我没有找到关于小数点修复之前和之后的问题。

现在,我知道我的一些数字是0.0437或类似,我希望它们显示为4.3700000E-02或其他东西。我有点希望它会自己做E位,但如果不是我怎么办呢?

这是我的确切行:

RealValConv =   '%1.7g' % struct.unpack('!f',    RealVal.decode('hex'))[0]

RealVal是十六进制数,表示我想要的值。

此外,这是在Python 2.7

2 个答案:

答案 0 :(得分:7)

>>> '{:.7e}'.format(0.00000000000000365913456789)
'3.6591346e-15'

答案 1 :(得分:3)

您可以使用科学记数法格式:这样的东西:

number = '%e' % oldnumber

>>> x = 1.759374
>>> print '%e' % x
1.759374e+00
>>>
>>> x = 1.79
>>> print '%e' % x
1.790000e+00
>>>
>>> x = 1.798775655
>>> print '%e' % x
1.798776e+00
>>>

或者,如果要控制精度,可以使用@leon方法(+1)提供的格式方法。

>>> x = 1.759374
>>>
>>> print('{:.2e}'.format(x))
1.76e+00
>>>
>>> print('{:.10e}'.format(x))
1.7593740000e+00
>>>
>>> print('{:.4e}'.format(x))
1.7594e+00
>>>
相关问题