2011-11-10 1 views
1

とにかく、64bitマシンでも、すべてのfloatを32bitとして明示的に扱うようPythonに依頼できますか?私は、コードを変更したくないとにかく私は明示的にすべてのフロートを64ビットマシンでも32ビットとして扱うようにPythonに依頼できますか?

...

+1

なぜ重要ですか? –

+0

私はあなたが64ビットマシンに32ビットPythonをインストールできると信じています。私はそれがフロートの大きさに影響を与えるかどうかはわかりません。 –

+1

@ThomasKマシンのワードサイズは浮動小数点サイズから独立しています。 –

答えて

3

Pythonのfloatを内蔵し、石に設定されています。あなたはそれを変更することはできません。 numpyのfloat32を使用できます。

+0

私はnumpyやarrayを使ってトリックを行うことができますが、あまりにも多くの場所が変更されているだけでなく、マシン依存の問題もあります。ちょうど32ビット計算を行うためにPythonを「混乱させる」64ビットマシンである擬似32ビット環境を設定する方法(またはツール)があるかどうか疑問に思うだけです。 –

+6

まず、マシンが32ビットであろうと64ビットであろうと、浮動小数点に関してはここもそこにもありません。単精度は16ビット、32ビット、64ビットのマシンでは32ビットです。同様に、倍精度もどこでも64ビットです。そして第二に、「フロート」が石に設定されています。その意味を変えることはできません。まあ、あなたはPythonとすべての拡張を再コンパイルすることができますが、それは実際には実用的ではありません。 –

+0

@HailiangZhang、非常に大きな浮動小数点配列を持たない限り、なぜ32または64ビットであれば気になりますか? 'numpy'は重要な場所に適しているようです。 –

1

このフロートのサイズは、コンパイル時に焼き付けられます。コンパイルオプションを渡して、C のdoublefloatとして、新しいpython実行可能ファイルで処理することができます。

1

http://docs.python.org/tutorial/floatingpoint.html

ほとんどすべてのマシンは、今日(2010年7月)は、IEEE-754浮動小数点演算を使用して、ほとんどすべてのプラットフォームでは、PythonはIEEE-754「倍精度」に浮かぶマップ。 754倍には53ビットの精度が含まれているので、入力時にコンピュータは0.1をJ/2 ** Nという形式の最も近い分数に変換しようとします。ここで、Jは正確に53ビットを含む整数です。

あなたは32ビットになりますどちらも64と32ビットマシン上同じサイズの山車が、ありますように見えます。

あなたはは、32ビットの浮動小数点数を持っている必要があります場合、あなたは(私はそのようなものが存在する場合は考えてきたんだが)使用32ビットの浮動小数点数を行うことのpythonのバージョンを実行する仮想マシンを使用するか、またはどちらかそれを自分でコンパイルしてください。

32ビットマシンで64ビットのPythonバージョンを使用できるはずですが、浮動小数点の動作方法は変更しないでください。私は、32ビットと64ビットのPythonの主な違いはRAMの使用だと思います.64ビットはもっと多くのRAMを使うことができますが、空き領域が増えます。

+0

32ビットマシンで64ビットPythonを使用することはできません。あなたは32対64が浮動小数点数の精度ではなくアドレス空間に関してであるということは間違いありません。 64ビットもCPUレジスタのサイズと関係があります。これは、Pythonがあなたに公開する範囲外です。 – Nathan

関連する問題