【问题标题】:Trigonometric inverse functions are not working三角反函数不起作用
【发布时间】:2025-11-25 00:40:01
【问题描述】:

我正在使用 android 计算器应用程序。我的三角反函数在弧度情况下正常工作。但在学位情况下,它们无法正常工作。

if (func.equals("sin"))  x = Math.sin(Math.toRadians(x));
else if (func.equals("cos"))  x = Math.cos(Math.toRadians(x));
else if (func.equals("tan"))  x = Math.tan(Math.toRadians(x));
else if (func.equals("asin")) x = Math.asin(Math.toRadians(x));
else if (func.equals("acos")) x = Math.acos(Math.toRadians(x));
else if (func.equals("atan")) x = Math.atan(Math.toRadians(x));

如果我将它们四舍五入,那么sin(.5)=0.0,这是错的吗?

【问题讨论】:

  • 请构造一个minimal test-case
  • x 是什么类型?是的,请给我们足够的代码来实际编译它并查看问题
  • 他的代码足以回答他的问题。你在编程方面想得太多,而在数学方面想得不够。
  • @GabeSechan - 确实,但前两行(以及调用的特定“示例”)都指前向触发函数。

标签: java android trigonometry


【解决方案1】:

反三角函数不采用弧度。他们接受价值观。 asin 和 acos 在 [-1, 1] 中取值,atan 在 [-inf, inf] 中取值。你永远不会在 asin/acos/atan 的输入上做 toRadians,你会在输出上做。

【讨论】:

  • Thnaks 但是当我输入 sin(.5) 时,它给出了错误的答案,例如 Math.round(Math.sin(Math.toRadians(x)));如果我删除 Math.round 那么如果我的角度为 180,它也会给出错误的答案
  • 您将弧度放入正常的三角函数中。你不喜欢反函数。想想数学:sin(x) = y。比意味着 asin(y) = x。 Y 不是弧度。
  • 是的,我明白你的意思#Gabe Sechan,但我要求的是简单的三角函数。当角度大于或等于 90 时,他们给出错误的答案。如果我把 Math.round 那么我也会得到错误的答案