我正在编写Java编程作业,需要帮助解释以下问题:
编写一个程序,使用Math.sin()
和Math.cos()
检查
sin 2 θ+ cos 2 θ的值约为1对于作为命令行参数输入的任何θ。只需打印该值即可。为什么这些值并不总是1?
答案 0 :(得分:4)
不要将浮点数与等式(==)进行比较。检查浮动数字相等性的最佳方法是定义一些临近ZERO的阈值,并将两个数字之间的差异与该阈值进行比较
在您的情况下,您的目标号码 1 ,结果可能是 0.999998
double threshold = 0.00001; // 1e-5
double target = 1;
double result = 0.999998;
System.out.println(Math.abs(target - result) < threshold); // prints true