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