PHP菜鸟博客_共同学习分享PHP技术心得【PHP爱好者】
PHP浮点数转int精度丢失?
2019-7-25 菜鸟站长
<?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类型即可。
评论:
repostone
2019-07-29 16:35 回复
非技术的路过。
发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容