我有一个计算值的函数,该值是浮点型:
function crunch (float $a, float $b):float
{
//do stuff
return $result;
}
function testSomething (float $a, float $b):bool
{
//if $result is -0 that returns false
$result = crunch($a, $b);
return $result === 0;
}
为什么-0不等于0,如何安全地检查该数字是否为零,假设
0
应该与-0
相同?
更新
由于有更多细节的问题。我有一个名为Vec2
的类,它具有x()
和y()
getter,以及一个名为cross
的方法,它看起来像这样:public function cross(Vec2 $vec2):float
{
return ($this->_x * $vec2->_y) - ($vec2->_x * $this->_y);
}
运行以下代码:
$cross = $this->cross($d);
这导致调试器输出如下:
而$cross === 0
的评估结果为false
;
-0
不是一个东西,这是真的:var_dump(-0 === 0);
- ChristianMreturn $result === 0.;
这个怎么样? - Xorifelse