以下代码给出“警告:bcdiv() [function.bcdiv]:除以零...”
$a = 20000000000000002;
$b = 20000000000000004;
echo bcdiv($a, $b);
为什么会这样?
如果我将值放在“”中,那么它不会发出警告。
你把你的数字写成整数,在 PHP 中这些数字太高了,被截断为最大可能的整数值。BCMath 适用于字符串。如果您使用的数字很高,请始终确保将它们放在引号中以确保它们确实是字符串。
您将它们包装起来是正确的,""
因为 bcdiv 想要将输入作为字符串
string bcdiv ( string $left_operand , string $right_operand [, int $scale ] )
左操作数
左操作数,作为字符串。
右操作数
右操作数,作为字符串。
规模
此可选参数用于设置结果中小数点后的位数。您还可以使用 bcscale() 为所有函数设置全局默认比例。
string bcdiv ( string $left_operand , string $right_operand [, int $scale ] )
参考 - http://www.php.net/manual/en/function.bcdiv.php
看看parameters
和type
-
左操作数
左操作数,作为字符串。
右操作数
右操作数,作为字符串。
规模
此可选参数用于设置结果中小数点后的位数。您还可以使用 bcscale() 为所有函数设置全局默认比例。
BCMath 函数都接受字符串作为参数,因此将它们放在引号中是您想要做的。
BCMath 文档可在以下位置找到:http ://www.php.net/manual/en/book.bc.php