Почему Math.Atan2 (-0.0, x) возвращает результат, отличный от Math.Atan2 (0.0, x)? - PullRequest
0 голосов
/ 15 января 2020

Пожалуйста, соблюдайте (используя LinqPad):

enter image description here

Т.е. утверждения

(0.0 == -0.0).Dump();
Math.Atan2(-0.0, -0.3).Dump();
Math.Atan2(0.0, -0.3).Dump();

Оценить до

True
-3.141592653589793
3.141592653589793

И то же самое в Powershell:

C:\Users\ethan> [math]::Atan2(-0.0, -0.3)
-3.14159265358979
C:\Users\ethan> [math]::Atan2(0.0, -0.3)
3.14159265358979
C:\Users\ethan> 0.0 -eq -0.0
True
C:\Users\ethan>

Всемирная федерация тхэквондо?

1 Ответ

1 голос
/ 15 января 2020

Это определено в IEEE 754 с плавающей запятой , стр. 45:

Для y с битом положительного знака, особые случаи atan2 (y, x) включают 0 и ∞ являются константами, которые могут сигнализировать о неточном исключении, но не об исключении:

  • atan2 (± 0, −0) равно ± π
  • atan2 (± 0, +0) равно ± 0
  • atan2 (± 0, x) равно ± π для x <0 </strong>
  • atan2 (± 0, x) составляет ± 0 для x> 0
  • atan2 (y, ± 0) равно −π / 2 для y <0 </li>
  • atan2 (y, ± 0) равно + π / 2 для y> 0
  • atan2 (± y, −∞) равно ± π для конечного y> 0
  • atan2 (± y, + ∞) равно ± 0 для конечного y> 0
  • atan2 (± ∞, x) равен ± π / 2 для конечного x
  • atan2 (± ∞, −∞) равен ± 3π / 4
  • atan2 (± ∞, + ∞) равен ± π / 4.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...