Zastanawiam się, w jaki sposób Python (3.3.0) drukuje liczby zespolone. Szukam wyjaśnienia, a nie sposobu na zmianę druku.Format liczby zespolonej w Pythonie
Przykład:
>>> complex(1,1)-complex(1,1)
0j
Dlaczego nie po prostu wydrukować "0"? Domyślam się: zachować wydajność złożonego typu.
Następny przykład:
>>> complex(0,1)*-1
(-0-1j)
Cóż, to proste "-1j" lub "(-1j)" zrobiłby. I dlaczego "-0" ?? Czy to nie to samo co +0? To nie wydaje się być problemem zaokrąglania:
>>> (complex(0,1)*-1).real == 0.0
True
A gdy część urojona dostaje pozytywne, -0 znika:
>>> complex(0,1)
1j
>>> complex(0,1)*-1
(-0-1j)
>>> complex(0,1)*-1*-1
1j
kolejny przykład:
>>> complex(0,1)*complex(0,1)*-1
(1-0j)
>>> complex(0,1)*complex(0,1)*-1*-1
(-1+0j)
>>> (complex(0,1)*complex(0,1)*-1).imag
-0.0
Am Brak tu czegoś?
chodzi o '0j' części, to powszechna praktyka w Pythonie, że' eval (repr (x)) == x' –