Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Warunek if nie sprawdza dla pewnych wartości
bulimaxiu
post
Post #1





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 18.06.2008
Skąd: Reda

Ostrzeżenie: (0%)
-----


Witam.

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"
  1. <?php
  2. function cena($cena, $config = false) {
  3.            if ($config) {
  4.                  # Konwersja z trybu tekstowego na obliczeniowy
  5.                  # ...
  6.            } else {
  7.                  # Konwersja z trybu obliczeniowego na tekstowy
  8.                  if (!empty($cena) AND strpos($cena, ",") === false) {
  9.                        if ($cena            == (int) $cena      ) {
  10.                              $cena = $cena . ",00";
  11.                        } else if ($cena*10  == (int) ($cena*10)) {          # Tu jest problem
  12.                              $cena = $cena . "0";
  13.                        } else if ($cena*100 == (int) ($cena*100)) {
  14.                              $cena = $cena  . "";
  15.                        }
  16.                  }
  17.                  $cena = str_replace(".", ",", $cena);
  18.            }
  19.            return $cena;
  20.      }
  21. ?>


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:
  1. <?php
  2. $cena = "644.6";
  3. if ($cena*10 == (int) ($cena*10)) {
  4. echo "OK";
  5. } else {
  6. echo "nieOK";
  7. }
  8. ?>

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?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 08:05