Math.cos, sin and tan returning inaccurate values in Java

99封情书 提交于 2019-12-31 05:12:10

问题


I am working on a calculator with a GUI in Java. The project is done, however the trigonometric functions do not work properly. This is the method for the cos function:

public void actionPerformed(ActionEvent evt) {
input = Double.valueOf(Display.getText());
ans = Math.cos(Math.toRadians(input));
Display.setText(String.valueOf(ans));
} 

Where "Display" is the text area. The problem is that the functions return inaccurate values. For example, when I enter 90 and click the cos button, the number 6.123233995736766E-17 is returned. The sin and tan buttons are also inaccurate in a similar manner (I can explain further if necessary). Where is the code going wrong, and how can I solve this


回答1:


The value returned by cos is not inaccurate. When you input 90, and convert it to radian using the method Math.toRadians, the result is not exactly pi/2, and hence when you pass this non-exact value to cos it gives a non-exact value. Peek here to hear from the legend :-)

As for your situation, you need to round the result of cos. Take a look here

You could do something like this:

public void actionPerformed(ActionEvent evt) {
    input = Double.valueOf(Display.getText());
    ans = Math.cos(Math.toRadians(input));
    Display.setText(String.format("%.6f", ans));
} 


来源:https://stackoverflow.com/questions/34836736/math-cos-sin-and-tan-returning-inaccurate-values-in-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!