gpt4 book ai didi

Java Math.cos() 方法未按预期返回 0

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:31:30 25 4
gpt4 key购买 nike

在 Windows 7 PC 上使用 Java(不确定这是否重要)并在应返回 0 的值(如 pi/2)上调用 Math.cos() 而不是返回小值,但小值,除非我误解,与零相差远大于 1 ulp。

Math.cos(Math.PI/2) = 6.123233995736766E-17
Math.ulp(Math.cos(Math.PI/2)) = 1.232595164407831E-32

这实际上在 1 ulp 之内,我只是感到困惑吗?这是解决这个小错误的可接受的包装方法吗?

public static double cos(double a){
double temp = Math.abs(a % Math.PI);
if(temp == Math.PI/2)
return 0;
return Math.cos(a);
}

最佳答案

不要忘记 Math.PI/2 是一个近似值。它不会完全 pi/2,所以cos(Math.PI/2)的结果不会完全 0. Math.cos 可能会返回通过计算 Math.PI/2 返回的确切值的余弦的非常准确的版本。

关于Java Math.cos() 方法未按预期返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2235689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com