Math.cos、sin和tan在Java中返回不准确的值
我正在用Java开发一个带有GUI的计算器。该项目已完成,但三角函数无法正常工作。这是cos函数的方法:Math.cos、sin和tan在Java中返回不准确的值,java,trigonometry,Java,Trigonometry,我正在用Java开发一个带有GUI的计算器。该项目已完成,但三角函数无法正常工作。这是cos函数的方法: public void actionPerformed(ActionEvent evt) { input = Double.valueOf(Display.getText()); ans = Math.cos(Math.toRadians(input)); Display.setText(String.valueOf(ans)); } 其中“Display”是文本区域。问题是函数返回的值
public void actionPerformed(ActionEvent evt) {
input = Double.valueOf(Display.getText());
ans = Math.cos(Math.toRadians(input));
Display.setText(String.valueOf(ans));
}
其中“Display”是文本区域。问题是函数返回的值不准确。例如,当我输入90并单击cos按钮时,返回数字6.123233995736766E-17。sin和tan按钮同样不准确(如有必要,我可以进一步解释)。
代码哪里出错了?我如何解决这个问题?cos返回的值不准确。当您输入90,并使用方法
Math.toRadians
将其转换为弧度时,结果是不精确pi/2
,因此当您将此非精确值传递给cos
时,它会给出一个非精确值。:-)
至于您的情况,您需要对cos
的结果进行取整。看一看
你可以这样做:
public void actionPerformed(ActionEvent evt) {
input = Double.valueOf(Display.getText());
ans = Math.cos(Math.toRadians(input));
Display.setText(String.format("%.6f", ans));
}
cos
返回的值并不不准确。当您输入90,并使用方法Math.toRadians
将其转换为弧度时,结果是不精确pi/2
,因此当您将此非精确值传递给cos
时,它会给出一个非精确值。:-)
至于您的情况,您需要对cos
的结果进行取整。看一看
你可以这样做:
public void actionPerformed(ActionEvent evt) {
input = Double.valueOf(Display.getText());
ans = Math.cos(Math.toRadians(input));
Display.setText(String.format("%.6f", ans));
}
在您的系统中,也可以看到的可能的副本可能是2.22e-16。结果实际上相当准确。在您的系统中,还可以看到的可能的副本可能是2.22e-16。结果实际上相当准确。