解析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的错误信息
Oct 09 PHP
推荐一篇入门级的Class文章
Mar 19 PHP
php学习 函数 课件
Jun 15 PHP
域名和cookie问题(域名后缀)
Oct 10 PHP
destoon会员注册提示“数据校验失败(2)”解决方法
Jun 21 PHP
纯php生成随机密码
Oct 30 PHP
yii添删改查实例
Nov 16 PHP
ThinkPHP路由机制简介
Mar 23 PHP
php简单实现sql防注入的方法
Apr 22 PHP
PHP调用接口用post方法传送json数据的实例
May 31 PHP
yii2实现Ueditor百度编辑器的示例代码
Nov 02 PHP
浅谈php使用curl模拟多线程发送请求
Mar 08 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
浅析HTTP消息头网页缓存控制以及header常用指令介绍
2013/06/28 PHP
ThinkPHP验证码和分页实例教程
2014/08/22 PHP
Alliance vs AM BO3 第一场2.13
2021/03/10 DOTA
JavaScript 组件之旅(四):测试 JavaScript 组件
2009/10/28 Javascript
基于jquery的防止大图片撑破页面的实现代码(立即缩放)
2011/10/24 Javascript
JavaScript中prototype为对象添加属性的误区介绍
2013/10/15 Javascript
浅谈jQuery页面的滚动位置scrollTop、scrollLeft
2015/05/19 Javascript
javascript实现rgb颜色转换成16进制格式
2015/07/10 Javascript
js支持键盘控制的左右切换立体式图片轮播效果代码分享
2015/08/26 Javascript
体验jQuery和AngularJS的不同点及AngularJS的迷人之处
2016/02/02 Javascript
jQuery设置Cookie及删除Cookie实例分析
2016/04/15 Javascript
Bootstrap实现带动画过渡的弹出框
2016/08/09 Javascript
JavaScript使用键盘输入控制实现数字验证功能
2016/08/19 Javascript
微信小程序 图片边框解决方法
2017/01/16 Javascript
JS中绑定事件顺序(事件冒泡与事件捕获区别)
2017/01/24 Javascript
解析Vue2.0双向绑定实现原理
2017/02/23 Javascript
将angular.js项目整合到.net mvc中的方法详解
2017/06/29 Javascript
详解webpack 如何集成第三方js库
2017/06/29 Javascript
Vue2.0学习之详解Vue 组件及父子组件通信
2017/12/12 Javascript
JavaScript 空间坐标的使用
2020/08/19 Javascript
JS实现简易贪吃蛇游戏
2020/08/24 Javascript
python实现自动登录人人网并采集信息的方法
2015/06/28 Python
Python使用matplotlib简单绘图示例
2018/02/01 Python
python 将数据保存为excel的xls格式(实例讲解)
2018/05/03 Python
Python学习小技巧总结
2018/06/10 Python
python使用KNN算法识别手写数字
2019/04/25 Python
Python 进程之间共享数据(全局变量)的方法
2019/07/16 Python
Python如何向SQLServer存储二进制图片
2020/06/08 Python
Python调用OpenCV实现图像平滑代码实例
2020/06/19 Python
HTML5之SVG 2D入门3—文本与图像及渲染文本介绍
2013/01/30 HTML / CSS
HTML5使用DOM进行自定义控制示例代码
2013/06/08 HTML / CSS
以实惠的价格提供高品质的时尚:Newchic
2018/01/18 全球购物
拖鞋店创业计划书
2014/01/15 职场文书
运动会通讯稿50字
2014/01/30 职场文书
司机工作自我鉴定
2014/09/19 职场文书
2015元旦文艺汇演主持稿(开场白+结束语)
2014/12/14 职场文书