- 締切済み
サイン、コサインの精度
初心者です。 サイン、コサインを使ってプログラムを書いていたのですが、 精度が悪くて話になりません。 誰か助けてくださ~い。 プログラム ↓ ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー #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 です。 あんまり詳しいことにはなれてません。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- TT414
- ベストアンサー率18% (72/384)
Ano.1,3,4の通りなのですが、πに関しては、math.h内の「PI」または「M_PI」などのマクロを使ってください(PI,M_PIなどの名前は、コンパイラによっては違います)。
- Oh-Orange
- ベストアンサー率63% (854/1345)
★度→ラジアンの変換式は ラジアン角=(円周率/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)
ANo.1が正解でしょう。 精度が悪いのではなく、角度の指定が間違っています。 180゜=3.1415926535 等で指定してあげれば、精度よく表示されるはずです。
- splwtr
- ベストアンサー率16% (75/461)
求めてる精度は? 話にならないなら、使わない。 以上。
- Evreux
- ベストアンサー率29% (225/774)
angle=180; などとされていますが、これは180度のつもりでしょうか? ここには角度をラジアンで代入すべきです。 180°=π(パイ) と換算してください