title: tan() in Java returning a strange value
body: <p>My code passes an angle in radians to the <code>cos</code>, <code>tan</code> and <code>sin</code>. Everything seems to work fine except tan of <code>90</code>, which gives the value <code>16331239353195370</code> for some odd reason. Example code:</p>
  
  <pre><code>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 &lt; 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);
      }
    }
  }
  </code></pre>
  
  <p>Why is the value returned not strictly equal to IEEE infinity?</p>