Java 计算sin30的值

Java 计算sin30的值,java,Java,我找不到sin 30的正确值 double degrees = 30.0; double radians = Math.toRadians(degrees); System.out.println(Math.sin(radians)); 它生成.49999999,但与计算器匹配的精确值为.5 请帮助我……Math.sin(…)进行插值以获得一个好的值,因此您不能期望得到精确的值。此外,在插值sin值时,浮点/双精度运算的问题是另一个问题。我不相信你用Math.ceil得到了这个结果。浮点

我找不到sin 30的正确值

 double degrees = 30.0;
 double radians = Math.toRadians(degrees);
 System.out.println(Math.sin(radians));
它生成.49999999,但与计算器匹配的精确值为.5


请帮助我……

Math.sin(…)
进行插值以获得一个好的值,因此您不能期望得到精确的值。此外,在插值sin值时,浮点/双精度运算的问题是另一个问题。

我不相信你用
Math.ceil
得到了这个结果。浮点数运算肯定会出现不准确的问题。而
Math.ceil
应该给您一个向上舍入到最接近整数的双精度值。看起来您应该得到
1.0
作为输出,而不是
0.5
@phoeagon。不,
Math.ceil
给出的是一个双精度值,而不是整数。@RohitJain是0.5计算器也是这样做的,但为什么输出是0.5呢?是question@AlexWien:据我所知,计算器中近似值的算术数字比显示的数字多,并且在显示之前是四舍五入的。另外,插值的不同算法可能是第一部分(更多数字)正常的原因,其他算法肯定不是原因