Math.cos、sin和tan在Java中返回不准确的值

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”是文本区域。问题是函数返回的值

我正在用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”是文本区域。问题是函数返回的值不准确。例如,当我输入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。结果实际上相当准确。