Nie mogę sobie poradzić z pewnym niezrozumiałym zachowaniem pętli if. Poniższa funkcja m.in. dodaje zera do wartości liczbowych np. z $cena="6,2" robi $cena="6,20"
<?php function cena($cena, $config = false) { if ($config) { # Konwersja z trybu tekstowego na obliczeniowy # ... } else { # Konwersja z trybu obliczeniowego na tekstowy if ($cena == (int) $cena ) { $cena = $cena . ",00"; } else if ($cena*10 == (int) ($cena*10)) { # Tu jest problem $cena = $cena . "0"; } else if ($cena*100 == (int) ($cena*100)) { $cena = $cena . ""; } } } return $cena; } ?>
Problem polega na tym, że dla przykładowych wartości: "644,6", "322,3" w niektórych sytuacjach, wskazane ww porównanie nie reaguje na te liczby. Liczby te powstają z działania "64,46*10" oraz "64,46*5". Pokusiłem się o testową wersję kodu:
<?php $cena = "644.6"; if ($cena*10 == (int) ($cena*10)) { } else { } ?>
i ten kod zadziałał prawidłowo. Mogę dodać, że wartości brane przez funkcję będące wynikiem matematycznym chodzą dobrze, a będące daną z mySQL'a już nie. Analizowałem linia po linii odpowiedniej sekcji z pokazywaniem wartości chwilowych i wszystkie wyglądają prawidłowo. Jak myślicie, gdzie mam szukać przyczyny takiej sytuacji?