PHP浮点数转int精度丢失?

  • 内容
  • 评论
  • 相关
<?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类型即可。

本文标签:

版权声明:若无特殊注明,本文皆为《菜鸟站长》原创,转载请保留文章出处。

本文链接:PHP浮点数转int精度丢失? - https://wlphp.com/?post=204

发表评论

电子邮件地址不会被公开。 必填项已用*标注

评论

1条评论
  1. avatar

    repostone Lv.1 回复

    非技术的路过。

    IP数据库文件不存在或者禁止访问或者已经被删除!