8

我的代码将弧度角传递给cos,tansin. 一切似乎都很好,除了 tan of ,它出于某种奇怪的原因90给出了值。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 不能精确地表示为 a double。您会在渐近曲线上找到一个非常接近它将变为无限的值。)

请参阅这些 sin/cos/tan 图表以了解我的意思,记住 pi/2 弧度是 90 度。

于 2012-10-03T17:34:24.390 回答