- ベストアンサー
JAVAの三角関数について
JAVAで以下のようなプログラムを書きました。 public class cos{ public static void main(String[] args){ System.out.println(Math.cos(3.14 * (45/180))); } } この出力結果をみると、「1.0」が出力されます。正しければ1/√2が出力されるはずですが、なぜ値が違うのでしょうか? ちなみに45の所を90に変えても同じく「1.0」が出力されます。 開発環境はEclipseを用いていて、OSはXPです。 なにか設定がおかしいのでしょうか?返答お願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
3.14 * (45/180)をプログラムが計算すると0になるからです。 そのため、cos(0)の値(つまり1)が出力されます。 計算結果が0になるのは45/180が原因です。 45/180は、45も180もint型なので、整数の割り算で計算されます。 45わる180を整数の割り算で計算すると0(あまり45)なので、 45/180の値は0になります。 解決策としては、45/180ではなくて、45.0/180.0と書いてみましょう。 45.0や180.0のように小数点をつけてあげると、整数ではなく実数と解釈されます。 そうする、ちゃんと実数の割り算で計算してくれて、 思ったような計算結果になると思います。 あるいは、3.14 * (45/180)ではなく、3.14 * 45/180としてみるのも良いと思います。
その他の回答 (2)
- vollgins
- ベストアンサー率22% (76/336)
Math.cosの引数はラジアンだから
お礼
ありがとうございます。
- osamuy
- ベストアンサー率42% (1231/2878)
http://java.sun.com/docs/books/jls/second_edition/html/conversions.doc.html の「5.6.2 Binary Numeric Promotion」に説明がありますので、読んでみるべきかと。
- 参考URL:
- http://www.ideone.com/RI3nw
お礼
ありがとうございます!
お礼
とてもわかりやすい回答ありがとうございます!