intval碰到小数为什么会减1
程序员文章站
2022-05-31 18:41:53
...
intval遇到小数为什么会减1
$a = 2.3;
echo ($a*100);//输出230
echo intval($a*100);//输出229
刚开始用的时候我都凌乱了,不知道这是怎么回事
查了好多资料才找到答案,如下
我们看到的:2.3在机器中实际是这样的:2.299999999...具体为什么我也不知道
所以2.3*100在机器中实际是2.299999..*100=229.99...
然后intval作用于他,省略了小数部分,于是就成了229,而不是230
但是intval(1.0)仍然是1,原因是1.0在机器中也是1.0,而不是0.99999...
这种机制应该只会在小数点后发挥作用吧
求大神从根源解释下这个神奇的问题
------解决方案--------------------
printf('%.16f', 2.3); //2.2999999999999998
你在学习计算机基础知识时,没有看二进制小数的章节吗?
$a = 2.3;
echo ($a*100);//输出230
echo intval($a*100);//输出229
刚开始用的时候我都凌乱了,不知道这是怎么回事
查了好多资料才找到答案,如下
我们看到的:2.3在机器中实际是这样的:2.299999999...具体为什么我也不知道
所以2.3*100在机器中实际是2.299999..*100=229.99...
然后intval作用于他,省略了小数部分,于是就成了229,而不是230
但是intval(1.0)仍然是1,原因是1.0在机器中也是1.0,而不是0.99999...
这种机制应该只会在小数点后发挥作用吧
求大神从根源解释下这个神奇的问题
------解决方案--------------------
printf('%.16f', 2.3); //2.2999999999999998
你在学习计算机基础知识时,没有看二进制小数的章节吗?
相关文章
相关视频
- 详解win10下PHP的安装配置(以php5.6为...
- php Swoole实现毫秒定时计划任务(详解)
- 挑战最棒的留言本的源码(二)_PHP教程
- PHP脚本数据库功能详解(中)_PHP教程
- intval碰到小数为什么会减1
上一篇: jQuery实现表单里文字按钮特效合集
下一篇: thinkphp修改字段内容有关问题
推荐阅读