1. ホーム
  2. python

[解決済み] "OverflowError "です。Python int too large to convert to C long" on windows but not mac

2022-01-29 22:04:43

質問事項

私は全く同じコードをWindowsとMacの両方で、python 3.5 64bitで実行しています。

Windowsでは、以下のようになります。

>>> import numpy as np
>>> preds = np.zeros((1, 3), dtype=int)
>>> p = [6802256107, 5017549029, 3745804973]
>>> preds[0] = p
Traceback (most recent call last):
  File "<pyshell#13>", line 1, in <module>
    preds[0] = p
OverflowError: Python int too large to convert to C long

しかし、このコードは私のマックでは問題なく動作します。どなたか、その理由の説明や、Windowsでのコードの解決策を教えていただけませんか?本当にありがとうございます。

解決方法は?

を超えると、このエラーが発生します。 sys.maxsize :

>>> p = [sys.maxsize]
>>> preds[0] = p
>>> p = [sys.maxsize+1]
>>> preds[0] = p
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OverflowError: Python int too large to convert to C long

確認することができます。

>>> import sys
>>> sys.maxsize
2147483647

より大きな精度の数値を取るには、裏で有界C整数を使用するint型を渡さないことです。デフォルトのfloatを使いましょう。

>>> preds = np.zeros((1, 3))