8

私のコードは、ラジアン単位の角度をcostanおよびに渡しsinます。何らかの奇妙な理由90で値を与えるtan of を除いて、すべてが正常に機能しているようです。16331239353195370コード例:

import java.text.DecimalFormat;

public class mathtable {

  public static void main(String[] args) {

    System.out.println("Angle   Sin Cos Tan");
    System.out.println("-----   --- --- ---");

    for (double angle = 0.0; angle < 180; angle +=5) {
      double angle_rad = Math.toRadians(angle);
      double sin = Math.sin(angle_rad);
      String sin_4 = new DecimalFormat("#.####").format(sin);
      double cos = Math.cos(angle_rad);
      String cos_4 = new DecimalFormat("#.####").format(cos);
      double tan = Math.tan(angle_rad);
      String tan_4 = new DecimalFormat("#.####").format(tan);
      System.out.println(angle + "  " + sin_4 + "   " + cos_4 + "   " + tan_4);
    }
  }
}

返される値が IEEE 無限大と厳密に等しくないのはなぜですか?

4

1 に答える 1

16

ええと、tan(pi/2)ラジアンでは本質的に無限ですよね?ですから、非常に多くの数を獲得することを期待しているのではないでしょうか。(pi / 2を正確に表すことができないため、無限大ではありません。無限大になる場所に非常に近いdouble漸近曲線上の値を見つけています。)

これらのsin/cos / tanのグラフを参照して、私が何を意味するかを確認してください。pi/2ラジアンは90度であることを思い出してください。

于 2012-10-03T17:34:24.390 に答える