Что-то не так с вашим кодом или что-то не так с iphone. Следующий код:
#include<stdio.h>
#include<math.h>
int main (void) {
printf ("%f\n", asin(1));
printf ("%f\n", asin(0.5));
float rim;
rim = asin(1) + asin (0.5);
printf ("%f\n", rim);
return 0;
}
производит более разумное:
1.570796
0.523599
2.094395
Другими словами, и ваша asin(0.5)
, и ваша сумма неверны.
Вы уверены, что на самом деле не делали что-то вроде:
rim = asin(1 + asin (0.5));
Это действительно даст вам NaN.
Обновление на основе добавленной вами информации:
Ваш код все еще отлично работает в моей среде:
#include<stdio.h>
#include<math.h>
int main (void) {
float jk = 7700;
//jk = 7700/10500;
jk = jk/10500;
printf ("%f\n", asin(jk));
float hg = 8000;
hg = hg / 9500;
printf ("%f\n", asin(hg));
float rim;
rim = asin(jk) + asin (hg);
printf ("%f\n", rim);
return 0;
}
Вывод:
0.823212
1.001175
1.824387
Вы заметите, что я изменил jk = 7700/10500
на jk = jk/10500
, так как последний дал 0 из-за целочисленного деления, но я не получаю NaN ни в одном случае. Вам действительно нужно опубликовать complete программу, которая показывает ошибочное поведение.