Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: dziwne wyniki przy porównywaniu wartości zmiennych
Forum PHP.pl > Forum > PHP
bogoos
Witam wszystkich
Mam taki kod:
Kod
$cena=floatval($cena);
$fStaraCena=floatval(mysql_result(mysql_query("SELECT products_price FROM products WHERE products_id = '".$id."'"),0,0));
echo "\$cena: ".$cena."<br />\$fStaraCena: ".$fStaraCena."<br />";
if ($cena==$fStaraCena) {echo "Cena bez zmian<br />";}
elseif ($cena>$fStaraCena) {echo "Cena wyższa<br />";}
elseif ($cena<$fStaraCena) {echo "Cena niższa<br/>";}
else {echo "Cos nie tak z cena<br />";};

i otrzymuję takie wyniki:
Cytat
$cena: 284.97
$fStaraCena: 284.97
Cena niższa

lub
Cytat
$cena: 1182.44
$fStaraCena: 1182.44
Cena bez zmian


Dziwne. Zaczałem szukać i zmodyfikowałem kod:
Kod
    $cena=floatval($cena);
    $fStaraCena=floatval(mysql_result(mysql_query("SELECT products_price FROM products WHERE products_id = '".$id."'"),0,0));
    echo "\$cena:".$cena."<br />\$fStaraCena:".$fStaraCena."<br />";
    $roznica=$cena-$fStaraCena;
    if ($roznica==0)
    {
        echo "Cena bez zmian: $roznica<br />";
    }
    elseif ($roznica>0)
    {
        echo "Cena wyższa: $roznica<br />";
    }
    elseif ($roznica<0)
    {
        echo "Cena niższa: $roznica<br/>";
    }
    else
    {
        echo "Cos nie tak z cena: $roznica<br />";
    };


Wyniki tym razem okazały się jeszcze ciekawsze:
Cytat
$cena:75.427
$fStaraCena:75.427
Cena niższa: -1.4210854715202E-014

oraz
Cytat
$cena:152.2185
$fStaraCena:152.2185
Cena bez zmian: 0

Czy ktoś ma jakiś pomysł co może być przyczyną takich wyników?
Darti
Faktycznie dziwne.
a spróbuj rzutować w ten sposób:
$zmienna = (float)$zmienna;

i porównywać za pomocą bccomp
bogoos
Tego nie próbowałem. Pomogło sformatowanie cen przed rzutowaniem:
Kod
$fStaraCena=floatval(number_format($fStaraCena, 2, '.', ''));


Natomiast czemu tak jest to do jest pory nie wiem:(
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.