您的代碼可能有問題,或者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由於整數divisio ñ,但在任何一種情況下我都沒有得到NaN。你真的需要發佈一個完整的程序,它顯示了錯誤的行爲。
我得到了正確的(或至少有效的)輸出,它是你的實際代碼?我有asin(0.5)= 0.5235 ... – Vladimir 2010-11-25 12:18:36
第二個asin值是0.8在你的機器上?你在Windows上運行這個嗎? :P – Bourne 2010-11-25 12:21:14