burada mesele değişmezleri, aslında bir ifadesi olarak çözümlenir olarak piton böyle (-0-0j)
gibi karmaşık sayılar ayrıştırmak olmamasıdır: Yani
>>> import ast
>>> ast.dump(ast.parse('(-0-0j)'))
'Module(body=[Expr(value=BinOp(left=UnaryOp(op=USub(), operand=Num(n=0)), op=Sub(), right=Num(n=0j)))])'
, bu karmaşık edebi ama int bir çıkarma değil ve karmaşık.
>>> -0-0j
0j
>>> (0j).__rsub__((0).__neg__())
0j
int parçası
nedeniyle karmaşık bileşenlerinin çıkarma sonucundan
signed zero bir 0j kompleksi bileşeninin sahip olduğu kabul edilir, ve daha sonra beklenen kaybetmek.'un sonucu,
IEEE 754-2008 belirtildiği gibi pozitif işarete sahip olmalıdır.
Sıfırın işareti denklemlerin çözümlerini etkileyebileceğinden, bu bir ayrıştırıcı sorunudur. Ancak, sorun python izleyicide repeatedlyraised ve closed ve 'hata değil' olarak görünüyor, dolayısıyla bu davranış her an yakında gideceği gibi görünmüyor. Karmaşık sayıları başlatmanın güvenilir yolu, complex
dahili numarasını çağırmaktır:
>>> 0-0j
0j
>>> 0+0j
0j
>>> complex(0, -0j)
-0j
>>> complex(0, +0j)
0j