PHP的基本乘法

时间:2013-09-28 17:20:48

标签: php numbers

考虑PHP中的以下代码

$a = 8425996523 * 121212713;
$b = sprintf('%.2f', $a);  
$mul = gmp_mul("8425996523", "121212713"); 

输出

1.0213378982814E+18 
1021337898281396864.00 
1021337898281396899

实际答案是 1021337898281396899。因此,显然我们需要使用像 gmp_mul 这样的库来对大数字进行算术运算。

我的问题是,如何识别此类错误? 即,当PHP进行类似

的计算时
  

8425996523 * 121212713

,我怎样才能确定结果不正确?

我看到的一种方法是检查E并假设每当我们强行转换这些数字时,错误就会退出。

1 个答案:

答案 0 :(得分:0)

使用

$b = sprintf('%.2d', $a);

而不是

$b = sprintf('%.2f', $a);

以下是显示差异的源代码截图:


enter image description here