是否有PHP计算可能导致-0?

Chr*_*der 1 php casting

我遇到一个复杂的脚本有时遇到麻烦(大约有2到3次,同时计算大约90'000个值),生成'-0'并将其写入数据库.我怀疑它是一个字符串(被计算的值可能导致整数,浮点数或字符串.)*

是否有任何PHP计算可能导致'-0'?

*=哦,我有时会错过强打字...

Vin*_*vic 5

正如Gurdas所说,你可以在数据库中输入强大的内容.除此之外,我不知道你的问题的答案,但我知道如何处理这个问题.

正如我所理解的那样,问题在于你不知道在哪种情况下你会得到'-0',这是一个有效的浮点表示0.所以你必须找到你在哪种情况下得到它.我会采取两种途径之一:

  1. 使用Xdebug,当值为'-0'时,在数据库插入代码中引发错误,以获取带参数的stack_trace(使用xdebug.collect_params = 1)
  2. 在脚本的开头创建一个空字符串,使用结果和行填充所有操作和操作数.然后,在insert子句中添加一个if($ value ==' - 0'){print $ string; }


GZi*_*ipp 5

将负数舍入正无穷大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 .