我遇到了一个复杂的脚本有时遇到问题(在计算约90'000个值时大约2到3次),生成'-0'并将其写入数据库。我怀疑它是一个字符串(被计算的值可能导致整数,浮点数或字符串。)*
是否存在可能导致'-0'的PHP计算?
* =哦,我有时会错过强打字......
答案 0 :(得分:5)
正如Gurdas所说,你可以在数据库中输入强大的内容。除此之外,我不知道你的问题的答案,但我知道如何处理这个问题。
正如我所理解的那样,问题在于你不知道在哪种情况下你会得到'-0',这是一个有效的floating point representation of 0。所以你必须找到你在哪种情况下得到它。我会选择两条路线之一:
答案 1 :(得分:5)
将负数舍入正无穷大,如ceil()
那样,可以产生-0。
echo ceil(-.7);
// -0
同样的结果,例如round(-.2)
。
这两个都将解决为真:
(-0 == 0)
(ceil(-.7) == 0)
虽然这些将分别解决为真和假:
(-0 === 0)
(ceil(-.7) === 0)
编辑:可以读取一个有趣的(并实现的)rfc here。