解析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 购物车实例(申精)
May 11 PHP
php防止sql注入示例分析和几种常见攻击正则表达式
Jan 12 PHP
PHP使用imagick读取PDF生成png缩略图的两种方法
Mar 20 PHP
ThinkPHP中的三大自动简介
Aug 22 PHP
PHP依赖倒置(Dependency Injection)代码实例
Oct 11 PHP
PHP中__FILE__、dirname与basename用法实例分析
Dec 01 PHP
PHP+MySQL插入操作实例
Jan 21 PHP
php动态绑定变量的用法
Jun 16 PHP
实例讲解如何在PHP的Yii框架中进行错误和异常处理
Mar 17 PHP
php自定义函数实现汉字转换utf8编码的方法
Sep 29 PHP
PHP数组中头部和尾部添加元素的方法(array_unshift,array_push)
Apr 10 PHP
Yii框架小部件(Widgets)用法实例详解
May 15 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
织梦模板标记简介
2007/03/11 PHP
PHP的cURL库功能简介 抓取网页、POST数据及其他
2011/04/07 PHP
关于Laravel-admin的基础用法总结和自定义model详解
2019/10/08 PHP
laravel框架与其他框架的详细对比
2019/10/23 PHP
setTimeout和setInterval的浏览器兼容性分析
2007/02/27 Javascript
JS排序之快速排序详解
2017/04/08 Javascript
在bootstrap中实现轮播图实例代码
2017/06/11 Javascript
JavaScript中EventLoop介绍
2018/01/22 Javascript
NW.js 简介与使用方法
2018/02/01 Javascript
Angular4.x Event (DOM事件和自定义事件详解)
2018/10/09 Javascript
Vue-drag-resize 拖拽缩放插件的使用(简单示例)
2019/12/04 Javascript
JS实现可以用键盘方向键控制的动画
2020/12/11 Javascript
简单介绍Python的Django框架加载模版的方式
2015/07/20 Python
python实现class对象转换成json/字典的方法
2016/03/11 Python
python批量制作雷达图的实现方法
2016/07/26 Python
深入理解python中sort()与sorted()的区别
2018/08/29 Python
Python多进程fork()函数详解
2019/02/22 Python
Python面向对象进阶学习
2019/05/21 Python
对Python中小整数对象池和大整数对象池的使用详解
2019/07/09 Python
python 协程中的迭代器,生成器原理及应用实例详解
2019/10/28 Python
解决pyinstaller打包运行程序时出现缺少plotly库问题
2020/06/02 Python
python 浮点数四舍五入需要注意的地方
2020/08/18 Python
详解Python中第三方库Faker
2020/09/25 Python
美国受信赖的教育产品供应商:Nest Learning
2018/06/14 全球购物
EJB需直接实现它的业务接口或Home接口吗,请简述理由
2016/11/23 面试题
javascript实现用户必须勾选协议实例讲解
2021/03/24 Javascript
车间组长岗位职责
2013/12/20 职场文书
毕业生护理专业个人求职信范文
2014/01/04 职场文书
教你打造完美的创业计划书
2014/01/06 职场文书
销售员求职个人的自我评价
2014/02/19 职场文书
会务接待方案
2014/02/27 职场文书
建筑工地门卫岗位职责
2014/04/30 职场文书
关于读书的演讲稿800字
2014/08/27 职场文书
物业前台接待岗位职责
2015/04/03 职场文书
2016应届毕业生自荐信范文
2016/01/28 职场文书
如何才能写好调研报告?
2019/07/03 职场文书