为什么负零在PHP中使用bccomp不等于正零?

时间:2016-04-21 03:03:18

标签: php bcmath

我尝试比较" + 0.00000000000"使用" + 0.00000000000"使用bccomp。我希望结果为0,但实际得到1。

$ cat bcmath.php
<?php
var_dump(bccomp("+0.00000000000","-0.00000000000"));
?>

$ php bcmath.php
int(1)
$

2 个答案:

答案 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;事先检查。