解析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 相关文章推荐
用PHP连接Oracle数据库
Oct 09 PHP
php中将字符串转为HTML的实体引用的一个类
Feb 03 PHP
Win下如何安装PHP的APC拓展
Aug 07 PHP
PDO的安全处理与事物处理方法
Oct 31 PHP
PHP会话控制实例分析
Dec 24 PHP
PHP基于ICU扩展intl快速实现汉字转拼音及按拼音首字母分组排序的方法
May 03 PHP
PHP substr()函数参数解释及用法讲解
Nov 23 PHP
PHP实现的日历功能示例
Sep 01 PHP
使用SMB共享来绕过php远程文件包含的限制执行RFI的利用
May 31 PHP
阿里对象存储OSS在laravel框架中的使用方法
Oct 13 PHP
PHP终止脚本运行三种实现方法详解
Sep 01 PHP
PHPstorm启用自动换行的方法详解(IDE)
Sep 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
PHP+Mysql+Ajax+JS实现省市区三级联动
2014/05/23 PHP
对php 判断http还是https,以及获得当前url的方法详解
2019/01/15 PHP
javascript编程起步(第四课)
2007/01/10 Javascript
使用jQuery同时控制四张图片的伸缩实现代码
2013/04/19 Javascript
javascript读取xml实现javascript分页
2013/12/13 Javascript
影响jQuery使用的14个方面
2014/09/01 Javascript
JavaScript indexOf方法入门实例(计算指定字符在字符串中首次出现的位置)
2014/10/17 Javascript
node.js中的buffer.length方法使用说明
2014/12/14 Javascript
js数组去重的方法汇总
2015/07/29 Javascript
详解javascript中原始数据类型Null和Undefined
2015/12/17 Javascript
jquery中validate与form插件提交的方式小结
2016/03/26 Javascript
以WordPress为例讲解jQuery美化页面Title的方法
2016/05/23 Javascript
详解使用grunt完成requirejs的合并压缩和js文件的版本控制
2017/03/02 Javascript
jQuery实现的手风琴侧边菜单效果
2017/03/29 jQuery
jquery实现提示语淡入效果
2017/05/05 jQuery
微信小程序实现顶部选项卡(swiper)
2020/06/19 Javascript
vue的传参方式汇总和router使用技巧
2018/05/22 Javascript
echarts实现地图定时切换散点与多图表级联联动详解
2018/08/07 Javascript
React router动态加载组件之适配器模式的应用详解
2018/09/12 Javascript
vue拖拽排序插件vuedraggable使用方法详解
2020/08/21 Javascript
jQuery实现input[type=file]多图预览上传删除等功能
2019/08/02 jQuery
通过实例了解JS 连续赋值
2019/09/24 Javascript
小程序实现上传视频功能
2020/08/18 Javascript
python+requests+unittest API接口测试实例(详解)
2017/06/10 Python
django使用admin站点上传图片的实例
2019/07/28 Python
基于Python共轭梯度法与最速下降法之间的对比
2020/04/02 Python
python 调用API接口 获取和解析 Json数据
2020/09/28 Python
详解CSS3中nth-child与nth-of-type的区别
2017/01/05 HTML / CSS
简述数组与指针的区别
2014/01/02 面试题
幼儿园庆六一游园活动方案
2014/01/29 职场文书
政法学院毕业生求职信
2014/02/28 职场文书
房产委托公证书样本
2014/04/04 职场文书
签订劳动合同通知书
2015/04/16 职场文书
2015年勤工助学工作总结
2015/04/29 职场文书
学雷锋献爱心活动总结
2015/05/11 职场文书
试用1103暨1103、1101同门大比武 [ DAIWEI ]
2022/04/05 无线电