简体   繁体   中英

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

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

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));
} 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM