在百度知道上看到这么一个问题
var_dump((0.3-0.2)==0.1);
结果是:false
后来查查手册,原来是浮点数的精度问题。那么0.3-0.2-0.1等于多少呢,结果:2.7755575615629E-17
如果真的涉及到浮点数的比较,可以这样,设计一个精度,就可以比较了。
$ps = 2.7755575615629*pow(10,-16); $_ps = -2.7755575615629*pow(10,-16); $flags = "false"; if((0.3-0.2-0.1)<$ps&&(0.3-0.2-0.1)>$_ps) { $flags = "true"; } echo "0.3-0.2==0.1 is $flags"
另外可以是gmp函数
那么上面的算式我们应该改写为 <?php $a = 0.1; $b = 0.7; var_dump(bcadd($a,$b,2) == 0.8); //true