4

これについてはすでにいくつかの質問を見てきましたが、私がやろうとしていることが失敗する理由を実際に理解するのに役立つものはありませんでした。

だから私はたくさんの浮動小数点値を持っていて、それらは異なる精度を持っています。いくつかは0.1で、他は1.759374などです。そして、それらがすべて「+0.0000000E+00」の形式になるようにフォーマットしたい

number = '%1.7f' % oldnumber

しかし、それはうまくいきませんでした。「小数点は1桁、小数点以下は7桁」と思っていたのですが、うまくいきません。「小数点の前後」の問題を気にすることさえないように見えるドキュメントの例を実際には取得していません。また、小数点の修正の前後に関する質問は見つかりませんでした。

ここで、数値の一部が 0.0437 などであることがわかっているので、それらを 4.3700000E-02 などと表示させたいと考えています。私はそれがそれ自体でEビットを実行することを望んでいましたが、そうでない場合はどうすればよいですか?

ここに私が持っている正確な行があります:

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

RealVal は、必要な値を表す 16 進数です。

また、これはPython 2.7にあります

4

2 に答える 2

9
>>> '{:.7e}'.format(0.00000000000000365913456789)
'3.6591346e-15'
于 2013-09-10T00:29:49.663 に答える
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) で提案されている format メソッドを使用できます。

>>> x = 1.759374
>>>
>>> print('{:.2e}'.format(x))
1.76e+00
>>>
>>> print('{:.10e}'.format(x))
1.7593740000e+00
>>>
>>> print('{:.4e}'.format(x))
1.7594e+00
>>>
于 2013-09-10T00:32:22.950 に答える