PHP浮点数转int精度丢失?
$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类型即可。
版权声明:若无特殊注明,本文皆为《菜鸟站长》原创,转载请保留文章出处。
本文链接:PHP浮点数转int精度丢失? - http://www.wlphp.com/?post=204
评论
1条评论repostone Lv.1 回复
非技术的路过。
IP数据库文件不存在或者禁止访问或者已经被删除!