概要
あまり見かけないPythonのエラーDivisionUndefined
に遭遇したので解説します。
サンプルコード
以下のコードを実行します。
from decimal import Decimal
sample = Decimal(0) / Decimal(0)
print(sample)
すると結果は以下の通り。
sample = Decimal(0) / Decimal(0)
decimal.InvalidOperation: [<class 'decimal.DivisionUndefined'>]
解説
'decimal.DivisionUndefined'
ってなんだ?って思って検索すると、これは除算の際に分子にも分母にも0(ゼロ)を連携した際に発生するエラーとのこと。
This occurs and signals invalid-operation if division by zero was attempted (during a divide-integer, divide, or remainder operation), and the dividend is also zero. The result is [0,qNaN].
引用元: https://tedboy.github.io/python_stdlib/generated/decimal.DivisionUndefined.html
似たようなエラーにdecimal.DivisionByZero
があると思います。
どちらも0による除算を試みた際に発生するエラーですが、decimal.DivisionByZero
の方は分子が0でない場合に限ります。非ゼロの数値を0で除算しようとした時にのみ発生するエラーです。
一般的には0を0で割るケースなどあまりないので、DivisionByZero
の方が見かけるのかもしれません。