2016-03-31 6 views
0

それらに精度の少なくとも32ビット(SYSを与える(無制限)ロングパイソンINTにより暗黙の遷移を検出

プレーン整数(また、単に呼ばれる整数)をCに長く使用して実装されていることPython2 Docs On Numeric Types状態、 .maxintは常に現在のプラットフォームの最大平方整数値に設定されます。最小値は-sys.maxint - 1です)。

  1. おそらく、後者のタイプ:ロング整数は、私は、整数上の非科学的な数学演算を行い、いくつかのコードを持っており、前者から後者への暗黙的な変換が心配です無制限の精度に

を持っています、後者への移行は、おそらく(少なくとも私のコードで)いくつかのバグを意味し、より重要なのはあまり効率的で旧

  • よりも
  • それはPLに可能ですエースの種類をチェックするために一人ひとりの数学の操作の後のコードが、これは読めないコードの雑然とグロブにも、表現

    a * b + 2 * c * d 
    

    になるだろう。

    通常のintの値が大きすぎる場合に例外がスローされるように設定する方法はありますか?

    答えて

    1

    現在のバージョンのPythonでは例外を設定する方法はありません。 Pythonの開発者は、時間の経過とともにintlongの型の違いを隠そうとしました。 Python 3では、唯一の整数型は無制限の精度型です(ただし、intと呼ばれます)。

    Pythonの古いバージョン(2.2より前、2001年頃)はintタイプをlongタイプに自動的に昇格しませんでした。代わりに例外が発生しました。残念ながら、これによりバグが増えました。無限の精度計算を強制するために、後ろにLという整数定数を初期化する必要があることを覚えています。詳細については、PEP 237を参照してください。

    +0

    答えに感謝します。 –

    関連する問題