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