PHP intval 转换浮点数精度丢失问题

在 PHP 和其他一些语言都会存在这个问题,转换浮点数为整数的时候会出现精度丢失,如下:

$n="19.99"; print intval($n*100); // prints 1998

解决办法:

1.转换成字符串再 intval

print intval(strval($n*100)); // prints 1999

2.使用 round 函数替代 floatval

php -r "echo round(19.99*100);"

3.先转换成字符串再取整

print intval(strval($n*100)); // prints 1999

4.使用 bc 系列函数

具体原因:http://www.laruence.com/2013/03/26/2884.html