在 PHP 和其他一些语言都会存在这个问题,转换浮点数为整数的时候会出现精度丢失,如下:
<?php $n = "19.99"; print intval($n * 100); //结果:1998
解决办法:
1. 先转换成字符串再 intval
echo intval(strval($n * 100)); //结果:1999
2. 使用 round 函数替代 floatval
echo round(19.99 * 100);
3. 使用高精度计算函数(推荐)
echo bcmul($amount, 100);