1

考虑下面的 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 并假设每当我们强制转换这些数字时,错误就会退出。

4

1 回答 1

0

利用

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

代替

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

这是显示差异的源代码屏幕截图:


在此处输入图像描述

于 2013-09-28T19:22:19.940 回答