Java 如果一个数字是-0

Java If a number is -0

如果有这个代码:

double sin = Math.sin(angle*rad);
double cos = Math.cos(angle*rad);
double tan = Math.tan(angle*rad);

它returns 指定角度的三角函数。但是对于角度,如 90,返回 -0.00000。所以当这些值被打印出来时,-0 看起来很奇怪。如何在 if 语句中测试 -0?

我试过这个代码:

if (tan==0) { s.o.p(tan); }

它没有 运行。

与零比较时,只需取变量的绝对值即可。您可能需要覆盖一个范围,因为它不一定总是恰好为 0.0。

if (Math.abs(tan) <= threshold) { ... }

您将 threshold 设置为足够小的值以涵盖您认为足够接近 0 的值。

编辑添加了 threshold/epsilon 比较值 - 谢谢

您可以用 1 除以您的值来检查负零。这将产生 Double.POSITIVE_INFINITY 正零和 Double.NEGATIVE_INFINITY 负零:

if (1.0 / value == Double.NEGATIVE_INFINITY) {
    // Value was a negative zero
}