if(0.030 != (0.530-0.500+0+0))
{
   $s = 0.530-0.500+0+0;
   $s = 0.03 - $s;
}
这居然不相等??
相减后居然不是0 这PHP 是外星计算法吗?

解决方案 »

  1.   

    即使我 
    $f = (0.530-0.500+0+0)*1000;
    $a = (0.030*1000);
    $s = (0.530-0.500+0+0)*1000;
    $ssa = $a - $s;
    这样也错啊
      

  2.   

    $f = (0.530-0.500+0+0)*1000;
    $a = (0.030*1000);

    $ssa = doubleval($a) - doubleval($f);这样写都错...... 他是怎么计算的啊?
      

  3.   

    怎么说呢简单的十进制分数不能在丢失一点点精度的情况下转化为二进制的格式,浮点数永远不会精确到最后一位,那么在PHP中,简单的浮点数运算是很有可能丢失精度,从而造成计算的结果出现混乱
      

  4.   

    $f = (0.530-0.500+0+0)*1000;
    $a = (0.030*1000);

    $ssa = doubleval($a) - doubleval($f);这样写都错...... 他是怎么计算的啊?这个不光php这样,JAVA也有着现象的
    所以PHP要解决浮点数的办法有2个
    一个是
    if(0.030 != (0.530-0.500+0+0))
    {
       $s = 0.53-0.5;
       $s =  0.03-"$s";
       echo $s;
    }
    把变量的那个用双引号加起来就OK了
    还有的一个办法就是用round函数了