atan2 (y,x), когда y & x очень малы

Я старался atan2 в С с аргументом около 10-14. Это дает неправильный ответ: около 90 вместо нуля, например:

void main()
{
    double a =3.4e-14;
    double b=9e-10;
    atan2(3.4e14,9.0e-9); // returns ~90 instead of zero or Not a number
}

2 ответа

Вы определили две переменные a а также b в вашем коде, но тогда вы используете константы в качестве аргументов atan2,

Значения a а также b просто игнорируются.

atan2(a, b); 

вернет значение, близкое к нулю, как и следовало ожидать.

То же самое для atan2(3.4e-14,9.0e-9) (нота e-14не e14).

Похоже, что вы звоните atan2 на 3,4*10^14, а не 3,14*10^(-14)?

Другие вопросы по тегам