日曜日, 10月 17, 2010

Python(に限らず、身の回りの各システム)の整数型の精度について

先のエントリにおいて、Pythonでの整数型の精度でハマったことについて触れました。それは確かに間違いないと思いますが、何がどう問題なのかについては放置したままです。気になりましたので、別エントリにして自分のために明記します。

こちらを見れば明らかなように、Pythonでの整数型の精度はCでのlongとして実装されているようです。これまで仕事で使用していた環境はUbuntu 10.04 32bit環境です。この場合、intもlongも32bitです。Windows XP 32bitでも動作させていましたが、この場合もint, longともに32bitです。X64ではというと、やはりintもlongも32bitですので、恐らくは問題ありません(環境は用意がありますが、まだ動作させていません)。64bit Linuxは複数のデータモデルがありますが、Ubuntu 10.04 amd64版ではintは32bitでlongは64bitでした。Snow Leopardではというと、intは32bitでlongが64bitです。

Pythonに限りませんが、バイナリファイルを扱う際には特にこれらデータモデルに気を付けてコーディングしなければなりませんね。

0 件のコメント: