【发布时间】:2016-03-25 06:44:47
【问题描述】:
几天前我开始编写代码并制作了一个简单的三角计算器。它使用度数并给出度数作为大多数值的答案,除了一些值。
例如。如果我想要 sin(90) 的答案,它会给我,但如果我想要 sin(180) 的答案,它会给我一个错误的答案。
这是 sin 函数的代码
Scanner input = new Scanner(System.in);
System.out.println ("sin, cos, or tan?");
String trig = input.next();
if (trig.equals ("sin")) {
System.out.println ("input sin value in degrees");
Scanner angle = new Scanner(System.in);
double a,b;
a = (angle.nextDouble());
b = Math.sin(Math.toRadians(a));
System.out.println("Answer: "+ (b) );
它给了我类似 1.2246467991473532E-16 的以下角度的答案:180、360、540、720 等。
cos 和 tan 函数也会发生这种情况(不过,它只会在 tan 函数未定义时发生,所以我可以理解)。
【问题讨论】:
-
wolframalpha.com/input/?i=sin(180) 和 1.2246467991473532E-16 是“几乎” 0,一些阅读:floating-point-gui.de
-
您为什么使用两个扫描仪?一个就够了。
-
Math.toRadians(180)的结果并不完全等于数学常数 π,因此Math.sin(Math.toRadians(180)不完全是 0。
标签: java trigonometry