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
}
如果有这个代码:
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
}