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

 更新时间:2013年06月21日 15:09:24   作者:  
本篇文章是对PHP中intval()等int转换时的意外异常情况进行了详细的分析介绍,需要的朋友参考下
先看看下面的网上的一个测试代码:
复制代码 代码如下:

<?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的。都是这个道理。好了。就这么简单的说说。至少比网上一大堆的不知所云好的多。

相关文章

  • discuz论坛更换域名,详细文件修改步骤

    discuz论坛更换域名,详细文件修改步骤

    这篇文章主要介绍了discuz论坛更换域名,详细搬家步骤,本文步骤和修改的文件给大家介绍的非常详细,需要的朋友参考下吧
    2020-12-12
  • PHP文件锁定写入实例解析

    PHP文件锁定写入实例解析

    这篇文章主要介绍了PHP文件锁定写入实例解析,需要的朋友可以参考下
    2014-07-07
  • PHP使用TCPDF处理pdf

    PHP使用TCPDF处理pdf

    TCPDF是一个开源的PHP库,用于创建和处理PDF文件,这篇文章主要为大家详细介绍了PHP如何使用TCPDF进行pdf的相关操作,需要的小伙伴可以参考下
    2023-12-12
  • 抓取YAHOO股票报价的类

    抓取YAHOO股票报价的类

    实时抓取YAHOO股票报价的函数,大家可以学习一下思路跟具体的代码,自己可以拓宽下。
    2009-05-05
  • 深入理解PHP的远程多会话调试

    深入理解PHP的远程多会话调试

    这篇文章主要给大家介绍了关于PHP远程多会话调试的相关资料,文中通过示例代码以及图片介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-09-09
  • PHP实现网站应用微信登录功能详解

    PHP实现网站应用微信登录功能详解

    这篇文章主要介绍了PHP实现网站应用微信登录功能,结合实例形式详细分析了php实现微信授权登录功能的具体操作步骤与相关实现技巧,需要的朋友可以参考下
    2019-04-04
  • PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】

    PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】

    这篇文章主要介绍了PHP操作MySQL中BLOB字段的方法,结合具体实例形式分析了php使用mysql的BLOB字段存储新闻内容与图片的相关操作技巧,需要的朋友可以参考下
    2017-09-09
  • 利用curl 多线程 模拟 并发的详解

    利用curl 多线程 模拟 并发的详解

    本篇文章是对利用curl多线程模拟并发进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • PHPStrom中实用的功能和快捷键大全

    PHPStrom中实用的功能和快捷键大全

    jetbrains出的PHPStrom很大程度上方便了PHP程序的编写,下面小编给大家总结些PHPStrom中实用的功能和快捷键大全,在编写的过程中变得又舒服又快捷,感兴趣的朋友一起看看吧
    2015-09-09
  • php查询mysql大量数据造成内存不足的解决方法

    php查询mysql大量数据造成内存不足的解决方法

    这篇文章主要介绍了php查询mysql大量数据造成内存不足的解决方法,实例分析了mysql查询时内存不足的原因与相应的解决方法,并且较为详细的分析了mysql_unbuffered_query函数的使用技巧,需要的朋友可以参考下
    2015-03-03

最新评论