我尝试比较" + 0.00000000000"使用" + 0.00000000000"使用bccomp。我希望结果为0,但实际得到1。
$ cat bcmath.php
<?php
var_dump(bccomp("+0.00000000000","-0.00000000000"));
?>
$ php bcmath.php
int(1)
$
答案 0 :(得分:1)
您是将+0与+0进行比较,还是将+0与-0进行比较。当左操作数大于右操作数时,返回'1'。当右操作数大于左边时,返回'-1'。当它们相等时返回'0'。如果将左侧的正数与右侧的负数进行比较,则会返回“1”。
var_dump(bccomp("+0.00000000000","-0.00000000000"));
答案 1 :(得分:1)
从普通算术的角度来看,-0,0和+ 0都是相同的。在计算中,一些操作可能有不同的行为。
例如,如果您尝试
if (-0 == +0)
您将获得TRUE
bccomp似乎是区分正零和负零的情况之一。
老实说,我不知道为什么它的行为如此,我只知道它确实如此,所以如果你正在编写一个依赖于使用bccomp进行比较的程序(并且在将负零与正数进行比较时返回0一)你可能想要运行&#34; if&#34;事先检查。