gpt4 book ai didi

php - -0 不等于 0

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

我有一个计算值的函数,它是一个 float :

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() setter/getter ,还有一个叫做 cross 的方法,看起来像这样:

public function cross(Vec2 $vec2):float
{
return ($this->_x * $vec2->_y) - ($vec2->_x * $this->_y);
}

运行这段代码:

$cross = $this->cross($d);

调试器输出结果

enter image description here

并且 $cross === 0 计算为 false

最佳答案

将 0 转换为 float 。它可能会失败,因为 0 作为字面量是一个 int,结果是一个 float ,所以 === 由于类型的原因是 false。

至少做这样的事情,像你的情况一样失败(结果是错误的):

php -r '$a = (float) -0; $b = 0; echo ($a === $b);'

在这种情况下结果为真:

php -r '$a = (float) -0; $b = (float) 0; echo ($a == $b);'

关于php - -0 不等于 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49180276/

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