I've got a strange error. See the code
$val1 = pow(2, 64);
$val2 = $val1 - 1;
echo number_format($val1, 0, '', '') . "<br/>";
echo number_format($val2, 0, '', '') . "<br/>";
and it`s output
18446744073709551616
18446744073709551616
Why $val2 has value 18446744073709551616 when it must be 18446744073709551615?