2016-12-19 3 views
9

Pythonのドキュメントによれば、浮動小数点計算が失敗したときにFloatingPointErrorが発生します。しかし、正確にここでは"浮動小数点演算"によって意味されていますか? 浮動小数点数の加算、乗算、除算を試みましたが、この特定のエラーを発生させることはありませんでした。代わりに、私はTypeErrorを得た:PythonはいつFloatingPointErrorを発生させますか?

10/'a' 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: unsupported operand type(s) for /: 'int' and 'str' 

は、誰かがFloatingPointErrorはPythonで提起されたときに、私が理解するのに役立つことはできますか?

+1

[IEEE浮動小数点標準を読む](https://en.wikipedia.org/wiki/IEEE_floating_point)は、どのような操作が失敗するかを理解するだけです。たとえば '' '1.0/0.0'''のようなものは、例外を発生させます(ゼロで割る)! – sascha

+4

@サスカこれは、しかし、 'ZeroDivisionError'エラーです。 –

+0

@ Ev.Kounis興味深いデザインの決定。しかし、まあ、あなたは正しいです! – sascha

答えて

13

fpectlモジュールの一部です。 FloatingPointErrorは、明示的にオンにしないと発生しません(fpectl.turnon_sigfpe())。

fpectlモジュールはデフォルトで内蔵されていませんし、その使用が推奨され及び専門家の手を除いて危険な場合があります

は、しかし、ノートを気に。詳細については、fpectl-limitationsの制限事項も参照してください。でもFloatingPointErrorsと


10/'a'は1を上げることは決してありません、オン。これは常にTypeErrorを発生させます。 FloatingPointErrorは、1.0/0.0のような浮動小数点演算を実際に実行するポイントに到達する操作に対してのみ発生します。 10/'a'はそれほど遠くには達しません。

+0

ありがとう@Memifertしかし、私はそれを取得していない。私はそれが正しいことを理解している場合、私はそれをオンにしない限り発生しないことを意味する? – DhKo

+0

@SudeahKrishna実際、誰でも手動で['FloatingPointError'](https://docs.python.org/3/library/exceptions.html#FloatingPointError)を上げることができます。しかし、標準ライブラリは、 '--with-fpectl'でコンパイルされず、' fpectl.turnon_sigfpe() 'を手動で設定しても、 OS特有)。 – MSeifert

+0

'' --with-fpect1''を使ってコンパイルするにはどうすればいいですか? '' fpect1''モジュールをインポートすることもできません。CentOS6とWindows10でも試しました。 – DhKo

関連する問題