解析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 相关文章推荐
首页四格,首页五格For6.0(GBK)(UTF-8)[12种组合][9-18][版主安装测试通过]
Sep 24 PHP
PHP生成Flash动画的实现代码
Mar 12 PHP
php for 循环语句使用方法详细说明
May 09 PHP
一道求$b相对于$a的相对路径的php代码
Aug 08 PHP
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
Jun 12 PHP
PHP检测用户语言的方法
Jun 15 PHP
laravel学习教程之存取器
Jul 30 PHP
PHP简单实现数字分页功能示例
Aug 24 PHP
php实现的统计字数函数定义与使用示例
Jul 26 PHP
PHP空值检测函数与方法汇总
Nov 19 PHP
PHP利用递归函数实现无限级分类的方法
Mar 22 PHP
laravel5环境隐藏index.php后缀(apache)的方法
Oct 12 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
escape unescape的php下的实现方法
2007/04/27 PHP
有关于PHP中常见数据类型的汇总分享
2014/01/06 PHP
php实现给一张图片加上水印效果
2016/01/02 PHP
php基于curl实现随机ip地址抓取内容的方法
2016/10/11 PHP
用PHP的socket实现客户端到服务端的通信实例详解
2017/02/04 PHP
完美解决thinkphp唯一索引重复时出错的问题
2017/03/31 PHP
php设计模式之策略模式应用案例详解
2019/06/17 PHP
PHP+ajax实现上传、删除、修改单张图片及后台处理逻辑操作详解
2020/02/12 PHP
如何通过PHP实现Des加密算法代码实例
2020/05/09 PHP
jQuery插件jRumble实现网页元素抖动
2015/06/05 Javascript
浅析jQuery中使用$所引发的问题
2016/05/29 Javascript
jQuery购物车插件jsorder用法(支持后台处理程序直接转换成DataTable处理)
2016/06/08 Javascript
jquery easyui validatebox remote的使用详解
2016/11/09 Javascript
JS变量中有var定义和无var定义的区别以及es6中let命令和const命令
2017/02/19 Javascript
vue插槽slot的简单理解与用法实例分析
2020/03/14 Javascript
[00:32]2018DOTA2亚洲邀请赛出场——VP
2018/04/04 DOTA
Python中除法使用的注意事项
2014/08/21 Python
python利用rsa库做公钥解密的方法教程
2017/12/10 Python
selenium+python设置爬虫代理IP的方法
2018/11/29 Python
django的ORM模型的实现原理
2019/03/04 Python
Python 堆叠柱状图绘制方法
2019/07/29 Python
tensorflow指定CPU与GPU运算的方法实现
2020/04/21 Python
小 200 行 Python 代码制作一个换脸程序
2020/05/12 Python
Python Flask异步发送邮件实现方法解析
2020/08/01 Python
英国家庭、花园、汽车和移动解决方案:Easylife Group
2018/05/23 全球购物
洲际酒店集团英国官网:IHG英国
2019/07/10 全球购物
成人大专生实习期的自我评价
2013/10/02 职场文书
营销专业应届生求职信
2013/11/26 职场文书
眼镜促销方案
2014/03/15 职场文书
民主评议党员自我评价材料
2014/09/18 职场文书
网络营销计划书
2015/01/17 职场文书
小学生禁毒教育心得体会
2016/01/15 职场文书
商业计划书如何写?关键问题有哪些?
2019/07/11 职场文书
写作技巧:如何撰写一份优秀的营销策划书
2019/08/13 职场文书
如何用Navicat操作MySQL
2021/05/12 MySQL
SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 WIN-8IVSNAQS8T7\Administrator 的信息
2021/06/30 SQL Server