Dzielenie przez 0

0

Piszę skrypt przeliczający waluty. W przypadku przeliczania dolara Hongkongu (0,4139) na dolara amerykańskiego (3,2213) wszystko jest ok. Ale odwrotnie - nie. I tak: w formluarzu przesyłam w jednym stringu kurs i przelicznik i następnie kod wygląda tak:

$pierwsza = explode(' / ', $_POST['wal_first']);
$druga = explode(' / ', $_POST['wal_second']);
...
$wynik = (($_POST['kwota_uzytkownika'] * $pierwsza[2]) / ($druga[2] / $druga[3]));

No i jeśli $druga[2] jest mniejsza od 0 (np. 0,2432) dostaję błąd "division by zero". Jeśli jest dodatnia - jest ok - wszystko się liczy, wyświetla wynik. Dostałem podpowiedź, żeby wszystkie zmienne były typu float więc zrobiłem tak:

$a = $pierwsza[2];
$a1 = floatval($a);
$b = $druga[2];
$b1 = floatval($b);
...
//i tak dalej

ale błąd pojawiał się dalej. Macie jakieś pomysły?

0

Bierze Ci najprawdopodobniej samo zero zostawiając przecinek i resztę cyfr dalej. Wprowadzenie liczb rozdzielonych kropką powinno załatwić sprawę, choć sugerowałbym jakąś lepszą formę walidacji danych. Ustawienie odpowiedniego locale też może być dobrym rozwiązaniem.

0

Dziękuję bardzo :) str_replace() rozwiązało problem :)

0

jeśli $druga[2] jest mniejsza od 0 (np. 0,2432)

hm, u nas w podstawówce mówili, że 1/4 jest większa od zera

0

Najmocniej przepraszam, miałem na myśli z przedziału <0; 1>. Też mnie tak uczyli. Uczyli mnie też że 2 + 2 = 4 a jak byłem na I roku to na zajęciach z programowania niskopoziomowego okazało się, że 2 + 2 nie zawsze jest równe 4 (na jakimś konkretnym procesorze) ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1