为什么Math.tan()会针对不同的精度级别返回不同的值?

时间:2017-05-31 20:48:33

标签: java trigonometry

我正在测试读取数学输入的程序,并根据操作顺序计算答案。我遇到过一个问题。计算Math.PI / 2的正切值时,它返回值1.633123935319537E16

但是,在我的计划中的某个地方,该值可以缩短为1.5707964,而不是1.5707963267948966。当我致电Math.tan(1.5707964)时,它会返回-1.3660249798894601E7的值。

我没有在寻找缩短时寻求帮助,而是希望了解不同的答案,以及在计算三角函数时应注意的任何其他事项。

1 个答案:

答案 0 :(得分:10)

  

我想了解不同的答案

  • tan(π/2)未定义
  • tan(π/2 - tiny amount)幅度非常大且正面
  • tan(π/2 + tiny amount)数量非常大且为负数

您传入的数字并不完全是π/2

  • 1.5707963267948966192313216... 稍微多于 π/2的精确值(计算here;更多小数位不是必要的,以说明这一点。)
  • 1.5707963267948966只是更小
  • 1.5707964只是更大。

为了说明,这里是Math Is Fun的图表: x