<?php
$a = 0.58;
var_dump(intval($a * 100)); //输出int(57)
可以看出原本结果应该是58的,但是使用了函数intval() 和 (int) 之后结果居然变为了57了,这是由于浮点类型的数字不能在不丢失一点儿精度的情况下通过内部二进制转换得到结果的,换句话说就是浮点类型的计算都会丢失精度的。
解决方案需要先使用strval() 函数将变量转成字符串类型。
<?php
$a = 0.58;
var_dump(intval( strval($a * 100))); //输出int(58)
先转化成字符串类型,然后在转化为int类型即可。