解析PHP中intval()等int转换时的意外异常情况


Posted in PHP onJune 21, 2013

先看看下面的网上的一个测试代码:

<?php
$a = 9.45*100;
var_dump($a);
var_dump(intval($a));
$a = 945*1.00;
var_dump($a);
var_dump(intval($a));
?><SPAN style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; DISPLAY: inline !important; FONT: 12px Simsun; WHITE-SPACE: normal; ORPHANS: 2; FLOAT: none; LETTER-SPACING: normal; COLOR: #000000; WORD-SPACING: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><SPAN><SPAN></SPAN></SPAN></SPAN><SPAN><SPAN></SPAN></SPAN>

运行结果:float(945) int(944) float(945) int(945)
这个代码虽然把结果都告诉了,但是很多人还是看不懂,这样就解释不了为什么会有意想不到的转型情况发生。
网上对这个情况讲的都模棱两可不知所云的。我在这里简单的解释下:
9.45这个数字在我们看到的是这样的,但是机器内部却不是这个,而是9.44999999999999999...。所以:
9.449999*100 = 944.9999。这样就可以看懂了吧?intval把尾数直接去掉了,这个叫神马来的呵呵忘了名字了.这样说来,intval和floor()函数差不多咯。呵呵。这个也是我之前没有察觉到的。也没注意到intval会向下舍入。
而 1.00就没有什么1.0099999这样的了,所以945*1.00就会出现一个float的945.那intval去转型自然就不会出现944的情况了。
还有些经典考试题,如:intval((0.1+0.7)*10) 等于7而不是8的。都是这个道理。好了。就这么简单的说说。至少比网上一大堆的不知所云好的多。
PHP 相关文章推荐
如何删除多级目录
Oct 09 PHP
php中通过虚代理实现延迟加载的实现代码
Jun 10 PHP
php中日期加减法运算实现代码
Dec 08 PHP
PHP 万年历实现代码
Oct 18 PHP
ThinkPHP CURD方法之page方法详解
Jun 18 PHP
PHP封装分页函数实现文本分页和数字分页
Oct 23 PHP
ThinkPHP中url隐藏入口文件后接收alipay传值的方法
Dec 09 PHP
php新浪微博登录接口用法实例
Dec 23 PHP
PHP编程实现的TCP服务端和客户端功能示例
Apr 13 PHP
php-fpm添加service服务的例子
Apr 27 PHP
PHP实现链表的定义与反转功能示例
Jun 09 PHP
使用laravel的Eloquent模型如何获取数据库的指定列
Oct 17 PHP
解析zend studio中直接导入svn中的项目的方法步骤
Jun 21 #PHP
解析coreseek for sphinx的使用
Jun 21 #PHP
关于使用coreseek并为其做分页的介绍
Jun 21 #PHP
使用php将某个目录下面的所有文件罗列出来的方法详解
Jun 21 #PHP
探讨GDFONTPATH能否被winxp下的php支持
Jun 21 #PHP
浅析php中jsonp的跨域实例
Jun 21 #PHP
解析php中array_merge与array+array的区别
Jun 21 #PHP
You might like
PHP5/ZendEngine2的改进
2006/10/09 PHP
使用网络地址转换实现多服务器负载均衡
2006/10/09 PHP
PHP二维数组的去重问题解析
2011/07/17 PHP
ThinkPHP采用实现三级循环代码实例
2014/07/18 PHP
PHP的PDO常用类库实例分析
2016/04/07 PHP
javascript预览上传图片发现的问题的解决方法
2010/11/25 Javascript
JavaScript伸缩的菜单简单示例
2013/12/03 Javascript
js 绑定键盘鼠标事件示例代码
2014/02/12 Javascript
从零学jquery之如何使用回调函数
2014/05/16 Javascript
JS弹出层遮罩,隐藏背景页面滚动条细节优化分析
2016/04/29 Javascript
Javascript发送AJAX请求实例代码
2016/08/21 Javascript
JavaScript实现横线提示输入验证码随输入验证码输入消失的方法
2016/09/24 Javascript
Jquery Easyui搜索框组件SearchBox使用详解(19)
2016/12/17 Javascript
JavaScript实现全选取消效果
2017/12/14 Javascript
vue component 中引入less文件报错 Module build failed
2019/04/17 Javascript
JS中的函数与对象的创建方式
2019/05/12 Javascript
Vue的状态管理vuex使用方法详解
2020/02/05 Javascript
js实现简单点赞操作
2020/03/17 Javascript
基于vue 动态菜单 刷新空白问题的解决
2020/08/06 Javascript
详解Python中的相对导入和绝对导入
2017/01/06 Python
Pycharm学习教程(2) 代码风格
2017/05/02 Python
python随机数分布random测试
2018/08/27 Python
Python使用pymysql模块操作mysql增删改查实例分析
2019/12/19 Python
CSS3对图片照片进行边缘模糊处理的实现
2018/08/08 HTML / CSS
吉列剃须刀美国官网:Gillette美国
2018/07/13 全球购物
如何选择使用结构还是类
2014/05/30 面试题
留学推荐信怎么写
2014/01/25 职场文书
机械设计制造及其自动化专业求职信
2014/06/17 职场文书
学校工作推荐信范文
2014/07/11 职场文书
乡领导班子四风问题对照检查材料
2014/09/25 职场文书
不同意离婚上诉状
2015/05/23 职场文书
小学五年级(说明文3篇)
2019/08/13 职场文书
详解MySQL 用户权限管理
2021/04/20 MySQL
python代码实现扫码关注公众号登录的实战
2021/11/01 Python
20180830晚上第一届KSL半决赛 雨神vs解冻(二龙 三炮解说)
2022/04/01 星际争霸
Python Pytorch查询图像的特征从集合或数据库中查找图像
2022/04/09 Python