1

以下代码给出“警告:bcdiv() [function.bcdiv]:除以零...”

$a = 20000000000000002;
$b = 20000000000000004;
echo bcdiv($a, $b);

为什么会这样?

如果我将值放在“”中,那么它不会发出警告。

4

5 回答 5

1

你把你的数字写成整数,在 PHP 中这些数字太高了,被截断为最大可能的整数值。BCMath 适用于字符串。如果您使用的数字很高,请始终确保将它们放在引号中以确保它们确实是字符串。

于 2013-03-12T08:55:51.533 回答
0

您将它们包装起来是正确的,""因为 bcdiv 想要将输入作为字符串

string bcdiv ( string $left_operand , string $right_operand [, int $scale ] )

左操作数

左操作数,作为字符串。

右操作数

右操作数,作为字符串。

规模

此可选参数用于设置结果中小数点后的位数。您还可以使用 bcscale() 为所有函数设置全局默认比例。

来自http://php.net/manual/en/function.bcdiv.php

于 2013-03-12T09:15:42.180 回答
0
string bcdiv ( string $left_operand , string $right_operand [, int $scale ] )

参考 - http://www.php.net/manual/en/function.bcdiv.php

看看parameterstype-

左操作数

左操作数,作为字符串。

右操作数

右操作数,作为字符串。

规模

此可选参数用于设置结果中小数点后的位数。您还可以使用 bcscale() 为所有函数设置全局默认比例。

于 2013-03-12T08:55:23.570 回答
0

根据文档bcdiv接受字符串:

string bcdiv ( string $left_operand , string $right_operand [, int $scale ] )

显然,您提供的整数值对于标准 PHP 整数来说太大而无法容纳该值。bcmath适用于字符串(这实际上并不奇怪):

对于任意精度的数学,PHP 提供了二进制计算器,它支持任何大小和精度的数字,以字符串表示。

(来自bcmath 介绍

于 2013-03-12T08:55:35.083 回答
0

BCMath 函数都接受字符串作为参数,因此将它们放在引号中是您想要做的。

BCMath 文档可在以下位置找到:http ://www.php.net/manual/en/book.bc.php

于 2013-03-12T08:55:37.233 回答