1. ホーム
  2. python

[解決済み] なぜ(inf + 0j)*1 は inf + nanj と評価されるのですか?

2023-01-22 20:17:16

質問

>>> (float('inf')+0j)*1
(inf+nanj)

なぜかというと これは私のコードに厄介なバグを引き起こしました。

なぜ 1 は乗法上の恒等式であり (inf + 0j) ?

どのように解決するのですか?

この 1 はまず複素数に変換されます。 1 + 0j になり、その後に inf * 0 の乗算となり、結果として nan .

(inf + 0j) * 1
(inf + 0j) * (1 + 0j)
inf * 1  + inf * 0j  + 0j * 1 + 0j * 0j
#          ^ this is where it comes from
inf  + nan j  + 0j - 0
inf  + nan j