Byłem zdumiony stwierdzeniem, że typ danych System.Numerics.Complex
w .NET nie daje matematycznie dokładnych wyników.Dlaczego typ złożony .NET jest uszkodzony?
Complex.Sqrt(-1) != Complex.ImaginaryOne
Zamiast (0, 1), otrzymuję (6.12303176911189E-17, 1), który wygląda trochę jak zaokrąglenia błędu.
Teraz zdaję sobie sprawę, że arytmetyka zmiennoprzecinkowa czasami prowadzi do takich wyników, ale zwykle użycie liczb całkowitych pozwoli uniknąć błędów zaokrąglania.
Dlaczego ta pozornie podstawowa operacja daje oczywiście zły wynik?
Typ nie jest zepsuty, nie ma powodu do dramatyczności. –
@HenkHolterman Cóż, to najlepsze słowo, jakie udało mi się opisać. –
Możliwy duplikat [Problemy z podwójną precyzją w .NET] (http://stackoverflow.com/q/566958/60761) i wiele innych. –