<?php
unset($n);unset($m); unset($x);
$n=0.55;
$m=5*11;
$x=$n*100;
echo "x:$x; m:$m<br>";
var_dump($x);
echo "<br>";
var_dump($m);
echo "<br>";
if($x==$m)echo "相等<br>"; else echo "不等<br>";unset($n);unset($m); unset($x);
$n=0.45;
$m=5*9;
$x=$n*100;
echo "x:$x; m:$m<br>";
var_dump($x);
echo "<br>";
var_dump($m);
echo "<br>";
if($x==$m)echo "相等<br>"; else echo "不等<br>";
?>
===========================================================
x:55; m:55
float(55) 
int(55) 
不等
x:45; m:45
float(45) 
int(45) 
相等
=======================================================
xuzuning(唠叨)大哥,能解释一下吗?
两个情况有什么区别吗?

解决方案 »

  1.   

    我试过对$x和$m都加上floatval函数处理过后,结果还是一样55!=55. 但如果将floatval函数换成intval,就可以得到预期的结果了,为什么? 而且这个问题的关键在于,为什么只有55才遇到不等的情况,而我从15,25,35一直试到95都没有遇到? 只有55才出这个问题? 55有什么特别的地方?
      

  2.   

    <?php
    unset($n);unset($m); unset($x);
    $n=0.55;
    $m=5*11;
    $x=$n*100;
    echo "x:$x; m:$m<br>";
    printf("%01.40f",$x);
    echo "<br>";
    printf("%01.40f",$m);
    echo "<br>";
    echo "=====================<br>";
    if($x==$m)echo "相等<br>"; else echo "不等<br>";unset($n);unset($m); unset($x);
    $n=0.45;
    $m=5*9;
    $x=$n*100;
    echo "x:$x; m:$m<br>";
    printf("%01.40f",$x);
    echo "<br>";
    printf("%01.40f",$m);
    echo "<br>";
    echo "=====================<br>";
    if($x==$m)echo "相等<br>"; else echo "不等<br>";
    ?>
    ===================================
    测试后看结果,确实 不等的
      

  3.   

    x:55; m:55
    float(55) 
    int(55) 
    =====================
    55.0000000000000071054273576010018587112427
    55.0000000000000000000000000000000000000000
    =====================
    不等
    x:45; m:45
    float(45) 
    int(45) 
    =====================
    45.0000000000000000000000000000000000000000
    45.0000000000000000000000000000000000000000
    =====================
    相等
      

  4.   

    这么说吧,就是用gettype($变量名),对比,不是同一种类型即不相等结分啊
      

  5.   

    不好意思,kabakaba(echo "kabakaba";) 本来是想把分加给你的,因为我第一次用这个功能.操作失误了!谢谢你详细的回复!