• 締切済み

サイン、コサインの精度

初心者です。 サイン、コサインを使ってプログラムを書いていたのですが、 精度が悪くて話になりません。 誰か助けてくださ~い。 プログラム ↓ ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー #include <stdio.h> #include <math.h> int main(){ double angle = 0; printf("\nangle = %f",angle); printf("\nsin(angle)-%f , cos(angle)-%f",sin(angle),cos(angle)); angle = 90; printf("\nangle = %f",angle); printf("\nsin(angle)-%f , cos(angle)-%f",sin(angle),cos(angle)); angle = 180; printf("\nangle = %f",angle); printf("\nsin(angle)-%f , cos(angle)-%f",sin(angle),cos(angle)); angle = 270; printf("\nangle = %f",angle); printf("\nsin(angle)-%f , cos(angle)-%f",sin(angle),cos(angle)); angle = 45; printf("\nangle = %f",angle); printf("\nsin(angle)-%f , cos(angle)-%f\n",sin(angle),cos(angle)); return 0;} ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー コンパイル後 ↓ ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー [~@~]$ gcc -o try2.exe try2.c -lm [~@~]$ ./try2.exe angle = 0.000000 sin(angle)-0.000000 , cos(angle)-1.000000 angle = 90.000000 sin(angle)-0.893997 , cos(angle)--0.448074 angle = 180.000000 sin(angle)--0.801153 , cos(angle)--0.598460 angle = 270.000000 sin(angle)--0.176046 , cos(angle)-0.984382 angle = 45.000000 sin(angle)-0.850904 , cos(angle)-0.525322 [~@~]$ ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー OSは Fedora Core 6 です。 あんまり詳しいことにはなれてません。

みんなの回答

  • TT414
  • ベストアンサー率18% (72/384)
回答No.5

Ano.1,3,4の通りなのですが、πに関しては、math.h内の「PI」または「M_PI」などのマクロを使ってください(PI,M_PIなどの名前は、コンパイラによっては違います)。

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.4

★度→ラジアンの変換式は  ラジアン角=(円周率/180) * 角度  ↑  のようになります。 ・よって  pi = 3.14159265358979;  angle = 90.0 * pi / 180.0;  printf( "\nangle = %f", angle );  printf( "\nsin(angle)-%f , cos(angle)-%f", sin(angle), cos(angle) );  ↑  他の角度も同様にラジアンに変換してから angle に代入して下さい。 ・以上。

  • fatbowler
  • ベストアンサー率48% (26/54)
回答No.3

ANo.1が正解でしょう。 精度が悪いのではなく、角度の指定が間違っています。 180゜=3.1415926535 等で指定してあげれば、精度よく表示されるはずです。

  • splwtr
  • ベストアンサー率16% (75/461)
回答No.2

求めてる精度は? 話にならないなら、使わない。 以上。

  • Evreux
  • ベストアンサー率29% (225/774)
回答No.1

angle=180; などとされていますが、これは180度のつもりでしょうか? ここには角度をラジアンで代入すべきです。 180°=π(パイ) と換算してください