Java 为什么Math.tan()会为不同的精度级别返回不同的值? 我正在测试一个程序,它读取数学输入,并根据运算顺序计算答案。我遇到了一个问题。计算Math.PI/2的切线时,它返回值1.633123935319537E16

Java 为什么Math.tan()会为不同的精度级别返回不同的值? 我正在测试一个程序,它读取数学输入,并根据运算顺序计算答案。我遇到了一个问题。计算Math.PI/2的切线时,它返回值1.633123935319537E16,java,trigonometry,Java,Trigonometry,但是,在我的程序中,该值可能会缩短到1.5707964,而不是1.57079636267948966。当我调用Math.tan(1.5707964)时,它返回值-1.3660249798894601E7 我不是在寻求关于缩短的帮助,而是想了解发散的答案,以及在计算三角函数时应该注意的任何其他事情 我想了解不同的答案 tan(π/2)未定义 tan(π/2-微量)的大小非常大且为正 tan(π/2+微量)的大小非常大,为负值 您传递的数字不完全是π/2: 1.5707963626794896

但是,在我的程序中,该值可能会缩短到
1.5707964
,而不是
1.57079636267948966
。当我调用
Math.tan(1.5707964)
时,它返回值
-1.3660249798894601E7


我不是在寻求关于缩短的帮助,而是想了解发散的答案,以及在计算三角函数时应该注意的任何其他事情

我想了解不同的答案

  • tan(π/2)
    未定义
  • tan(π/2-微量)
    的大小非常大且为正
  • tan(π/2+微量)
    的大小非常大,为负值
您传递的数字不完全是
π/2

  • 1.57079636267948966192313216…
    π/2
    的更精确的值(已计算;不需要更多的小数位来说明这一点)
  • 1.570796363267948966
    稍小一些
  • 1.5707964
    更大
为了说明这一点,下面是以下图表:

分享您的代码并生成MCVE会很有帮助“我不是在寻求帮助来计算缩短”,但我想这是因为您将其分配给了某个
浮点值
。“计算三角函数时需要注意的任何其他事项。”不仅仅是三角函数,但是任何浮点计算:你知道tan(pi/2)的理论值吗?@Charlie注意,
[mcve]
是这个链接的便捷快捷方式Andy,希望你同意我添加说明。