あなたのコードに間違いがあるか、または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)
とあなたの合計の両方が正しくありません。確かにあなたはNaNを与える
rim = asin(1 + asin (0.5));
:
は、あなたが実際に何かをしなかったことをあなたはよろしいです。
追加した情報に基づいて更新:あなたのコードはまだ私の環境では正常に動作します
:
#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
には、整数divisioのために後者が0になったのでn、どちらの場合でもNaNは得られません。あなたは本当にプログラムを送信する必要があります。このプログラムは誤った動作を示しています。
私は正しい(または少なくとも有効な)出力を得ました。実際のコードですか?そして、私はasin(0.5)= 0.5235 ... – Vladimir
あなたのマシンで2番目のasin値は0.8ですか? Windowsでこれを実行していますか? :P – Bourne
@Alexei、_actual_コードを投稿する必要があります。誰もが言っているように、それは大丈夫(他のプラットフォームでは間違いなく)うまくいくようです。 – paxdiablo