我已经看到了一些关于这个问题的问答,但是没有一个让我真正理解为什么我的尝试失败了。
所以我有一堆浮点数,它们具有不同的精度。有些是0.1,其他的是1.759374等等。我想将它们格式化,使它们都以“+0.0000000E +00”的形式呈现。我试过这样做:
number = '%1.7f' % oldnumber
但是这并没有起作用。我认为我告诉它要做的是“小数点后一位数字,然后7个数字,浮点数”,但它不起作用。我没有真正理解文档中的示例,它们似乎甚至不关心“小数点前后”问题,而且我也没有找到有关小数点前后修复的问题。
现在,我知道我的一些数字是0.0437或类似的,我希望它们出现为4.3700000E-02或其他什么东西。我有点希望它会自动进行E位操作,但如果它没有,我该怎么做?
以下是我确切的行:
RealValConv = '%1.7g' % struct.unpack('!f', RealVal.decode('hex'))[0]
RealVal是一个十六进制数字,代表我想要的值。
此外,这是在Python 2.7中。
g
而不是f
。例如,"%1.7g" % .0000012323
将变成'1.2323e-06'
。这是你想要的行为吗? - David Robinson%g
在某些情况下使用%f
,例如,使用%1.7g
格式化math.pi
会得到3.141593
。%e
始终使用“e”表示法。 - torek