PHP的基本乘法

Consider the below code in PHP

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

Output is

1.0213378982814E+18 
1021337898281396864.00 
1021337898281396899

The actual answer is 1021337898281396899. Hence, it is clear that we need to use any libraries like gmp_mul to do arithmetic with large numbers.

My question is, how to identify such errors? ie, when PHP does a calculation like

8425996523 * 121212713

, how can I identify that the result is not correct?

One way I see is to check for E and assume that whenever we forcefully convert such numbers, the errors exits.

Use

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

Instead of

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

Here's a screenshot of the source code to show the difference:


enter image description here