2012-10-09 3 views
8

.NET의 System.Numerics.Complex 데이터 형식이 수학적으로 정확한 결과를 산출하지 못하는 것에 놀랐습니다. 대신왜 .NET의 복합 유형이 손상 되었습니까?

Complex.Sqrt(-1) != Complex.ImaginaryOne 

(0, 1), 내가 할 (6.12303176911189E-17, 1), 반올림 오류처럼 많이 보이는.

이제 부동 소수점 산술로 인해 때때로 이와 같은 결과가 발생하지만 보통 정수를 사용하면 반올림 오류가 발생하지 않습니다.

왜이 겉으로보기에는 기본적인 작동으로 명백하게 잘못된 결과가 나옵니까?

+3

형식이 깨지지 않았으므로 연 극적 이유가 없습니다. –

+3

@HenkHolterman 글쎄, 내가 설명 할 수있는 가장 좋은 단어이다. –

+0

[Double precision problems on .NET] (http://stackoverflow.com/q/566958/60761) 및 기타 여러 가지가있을 수 있습니다. –

답변

10

디 컴파일 된 Sqrt 메소드를보십시오.

실제로 극좌표 및 라디안 사용으로 인한 반올림 오류가 있습니다. value.Phase/2.0은 정확하게 나타낼 수없는 pi/2를 반환합니다. 극 좌표 (1, pi/2)에서 변환 할 때 실수 좌표가 0에 가까울 때 반올림 오류가 표시됩니다.

관련 문제