2017-02-01 33 views
1

Pythonの浮動小数点数はどの程度正確ですか?常に倍精度ですか、それとも実装やプラットフォーム固有ですか? CPythonとPyPyの違いはありますか?浮動小数点数の精度

+0

(ダウンしないでください!)色を追加するには、CおよびC++では実装固有のものです。 JavaではIEEE754でなければなりません。 Pythonに関しては、わかりません。クイックグーグルはこれについて(私にとって)どちらの光も出さない。 – Bathsheba

+0

CPython2をチェック:https://docs.python.org/2/tutorial/floatingpoint.html – MYGz

+0

ここにヒントがありますhttp://floating-point-gui.de/languages/python/。一番上の行は、ほとんどすべてのプラットフォームがPythonの浮動小数点をIEEE 754倍精度にマップしています。 " CやC++と同じように見えます。 – Bathsheba

答えて

3

Pythonのからドキュメント:

浮動小数点数は、通常、Cでダブルを使用して実装されています。精度について、あなたのプログラムが 実行されているマシンの 浮動小数点数の内部表現 情報は sys.float_info で利用可能です。

sys.float_infoは、フロートタイプに関する情報を保持する構造体シーケンスである。これには、精度と内部表現に関する低レベルの情報が含まれています。 フロート精度

import sys 

print(sys.float_info.mant_dig) 

mant_dig属性点:フロート

ほとんどすべてのプラットフォームの仮数におけるベース基数の桁数は、Pythonは、IEEE 754ダブル 精度に浮かぶマップ。

+0

ありがとう!はい、私は 'sys.float_info'を知っていますが、問題は「通常」です。私は質問を逆にすることができます、それはCダブルではないのですか? –

+0

@EcirHana:CPythonでは、* always * C doubleです。これは[CPythonソース](https://github.com/python/cpython/blob/3.6/Include/floatobject.h#L17)でハードコードされています。 –

+0

うん、これは私のために十分です。 (公式のpythonのドキュメントへのリンクがあるのは良いことですが)。 upvoteをしてください。 – Bathsheba

1
import sys 
sys.float_info 

sys.float_info(MAX = 1.7976931348623157e + 308、max_exp = 1024、max_10_exp = 308分= 2.2250738585072014e-308、min_exp = -1021、min_10_exp = -307 = 15掘る、mant_dig = 53 、イプシロン= 2.220446049250313e-16、基数= 2、ラウンド= 1)

ここで見つける

https://docs.python.org/3/library/stdtypes.html#typesnumeric 秒4.4

は、このヘルプあなたをしていますか?

関連する問題