PHP浮点数转换整型注意事项
先我们来做个实验说明问题的存在
<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy1467')">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy1467>$f = 0.58;
var_dump(intval($f * 100.0));
也许你认为他会输出58,但是实际上他输出的是57.
原因是作为浮点型数据,其精度已经损失了一部分,达不到完全精确。所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。
在实际的开发中我们可以使用如下逻辑来解决这种境况
<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy4776')">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy4776>intval(round(floatval($value) * 100));
round也可以使用ceil目的就是将精度调准。
您可能感兴趣的文章:
PHP浮点数转换整型注意事项
python中表达式4 0.5值的数据类型为?
php 总结数值计算的注意事项
浅谈PHP变量的8种类型以及弱类型
php浮点数精度用法分析
php浮点相减不等于0
php数据类型转换学习笔记
php怎么把字符串转换为数值?
php中浮点型(float)和整型(integer)数据类型详解
python有short类型吗