我有 2 个双打,检查它们是否有相同符号的最佳方法是什么?
现在我检查
Math.signum(d1) == Math.signum(d2)
但我不确定它对双精度是否正确,因为 Math.signum(( 本身返回一个双精度值。
如果我已经检查了两个数字都不接近 0,上述内容可以吗?
它有效,因为返回值始终是param / Math.abs(param)
(x / |x|
(,所以来自{-1.0, 0.0, 1.0}
的数字(如果输入为 0,则为 0.0 以避免除以 0(,根据 javadoc,它适用于双精度。
如果您不确定,可以随时检查:d1 * d2 >= 0
。
你可以证明 d1 * d2> 0。