考虑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并假设每当我们强行转换这些数字时,错误就会退出。
答案 0 :(得分:0)
使用
$b = sprintf('%.2d', $a);
而不是
$b = sprintf('%.2f', $a);
以下是显示差异的源代码截图: