2016-11-17 17 views
1
ここ

は、Pythonコンソールで入力されたいくつかの数字、そして得られた表現であり:科学的な表記法を使って数値を表現するかどうかはPythonがどのように決定しますか?

>>> 1 
1 
>>> 1.234 
1.234 
>>> 1.234e5 
123400.0 
>>> 1.234e15 
1234000000000000.0 
>>> 1.234e25 
1.234e+25 

...と、ここで同じ番号が印刷されたときに何が起こるかです:

>>> print 1 
1 
>>> print 1.234 
1.234 
>>> print 1.234e5 
123400.0 
>>> print 1.234e15 
1.234e+15 # different! 
>>> print 1.234e25 
1.234e+25 

どのようにPythonが決めるん使用する表現?いくつかの数字がprintの場合とない場合の違いは何ですか?

答えて

4

。整数は常にそのまま表現されます。浮動小数点数はPython 2.7に示されている方法

は、それがrepr()(例えば、直接コンソールまたはコレクションのメンバーとして)またはstr()(例えばprintステートメントで)を用いて表されるのかどうかに依存します。

str()

>>> 1e-4 
0.0001 
>>> 0.00009999 
9.999e-05 
>>> 1e16-2 
9999999999999998.0 
>>> 10000000000000000.0 
1e+16 

、上限が約1e11である:彼らはいずれか未満0.00011e-4)または少なくとも1e16が場合repr()

は、浮動小数点数は、科学的表記法を使用して表されています

>>> print 1e11-1 
99999999999.0 
>>> print 100000000000.0 
1e+11 

注:Python 3ではstr()はと同じように浮動小数点数を表します。

2

数値は値として保存されます。 __repr__の出力は、実装の種類と番号のタイプに基づいて変更される場合があります。数値の文字列表現を書式設定する必要があります。

例:あなたは、文字列をフォーマットすると

>>> type(1e3) is type(1000.0) # float 
True 
>>> type(1e3) is type(1000) # int 
False 

、あなたはそれが自動的に最も読みやすいフォーマットを決定するために持っている%g/{:g}を使用することができます。明示的な科学記法として%e/{:e}を使用してください。のみ浮動小数点数は、Pythonで科学的表記法を使用して表される

>>> x = 1234567 
>>> "{:.2e}".format(x) 
1.23e+06 
+0

-1数字のアイデンティティ比較を使用すると、無関係な実装の詳細がすべてミックスに持ち込まれます。 – wim

+0

@wimは本当にポイントではありませんが、わかります。それは科学的表記法が依然として数字であることを示すことを意味していました。それは別のタイプのようではありません。私はそれを 'type'に変更します。 – Goodies

関連する問題