$tmp = 570.00+7.80+35.10+3.90+3.90+7.80+19.50;
if($tmp != 648)
echo "tmp is:[$tmp]";蛋疼啊 各种 intval floatval ===全等 都试过了 就差看PHP源代码了! 不知道是我这边的php版本bug还是啥的
求教各位大虾....主要环境信息:
PHP API 20041225
PHP Extension 20060613
Zend Extension 220060519 Apache Version Apache/2.2.17 (Unix) DAV/2 PHP/5.2.17 SVN/1.6.16
Apache API Version 20051115
if($tmp != 648)
echo "tmp is:[$tmp]";蛋疼啊 各种 intval floatval ===全等 都试过了 就差看PHP源代码了! 不知道是我这边的php版本bug还是啥的
求教各位大虾....主要环境信息:
PHP API 20041225
PHP Extension 20060613
Zend Extension 220060519 Apache Version Apache/2.2.17 (Unix) DAV/2 PHP/5.2.17 SVN/1.6.16
Apache API Version 20051115
printf('%.14f', $tmp);647.99999999999989建议你补习一下计算机基础知识:数的表示
浮点数在计算机内部存储的是不保证精度的···
看看PHP手册的浮点数吧,如果要比较就这样abs($a-648)<0.00001,后面的0.00001换成你可接受的精度就行了。
结果是false
php弱类型 我一直以为是如果和值是整数的话 php 会自动转换成int型
回去看看php手册。
php使用确实方便的同时也比较容易出现疏忽啊。
我的意思就是有时候php框的比较泛,会让人遗漏一些细节。
最开始的时候发现一个字符串形式的数字和一个二进制的数字能比较,我就比较认为php会比较智能处理这些问题。
php提供了弱的比较(==)和强的比较(===)两种比较形式,可以根据你的需要选择。
至于你的问题,那是浮点数"陷阱",主要原因是浮点数是无法精确表示的,即使在C语言中也是类似的