代码之家  ›  专栏  ›  技术社区  ›  Christian Studer delphist

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

  •  1
  • Christian Studer delphist  · 技术社区  · 15 年前

    是否存在任何可能导致'-0'的PHP计算?

    2 回复  |  直到 15 年前
        1
  •  5
  •   GZipp    15 年前

    将负数四舍五入到正无穷大,如 ceil()

    echo ceil(-.7);
    
    // -0
    

    同样的结果也会出现,例如。, round(-.2) .

    这两个问题都将解决:

    (-0 == 0)
    (ceil(-.7) == 0)
    

    而这些将分别解析为true和false:

    (-0 === 0)
    (ceil(-.7) === 0)
    

    编辑:可以阅读一个有趣的(并且实现的)rfc here

        2
  •  5
  •   Vinko Vrsalovic    15 年前

    正如Gurdas所说,您可以在数据库中进行强类型输入。除此之外,我不知道你的问题的答案,但我知道如何解决这个问题。

    据我所知,问题在于,您不知道在哪些情况下会得到有效的“-0” floating point representation of 0 顺便说一句因此,你必须找出在哪些情况下你得到了这个结果。我会选择两条路线中的一条:

    1. 使用 Xdebug ,当值为“-0”时,在数据库插入代码中引发错误,以获取带有参数的堆栈跟踪(使用xdebug.collect_params=1)