Przeliczanie liczb co jest nie tak

0

Witam napisałem sobie mały skrypt który ma za zadanie przeliczanie liczb o podany procent, lecz coś się źle wykonuje. Oto przykład

Kwota 27.33 podniesiona o 30% Powinna się równać = 35,529 TAK WYNIKA Z KALKULATORA

Mój skrypt


        echo $kwota ." ---> < 30<br />";
	
	$procent = $kwota * 0.30;
	
	echo $procent ."<br />";
	
	$liczba = $kwota + $procent;   ---> I TUTAJ WYNIK JEST 35.1
	
	echo $ma ."<br />"; 

Tak mi to wypisuje na kalkulatorze
27.33 ---> < 30
8.1 -> $ procent
35.1 -> $ liczba

Nie trudno zauważyć że już $procent jest jakiś dziwny powinien mieć 8,199 (8,2) a jest 8.1
czego tutaj użyć jakiegoś zaokrąglania liczb?

1

Przecinek.
Podajesz liczbę jako string (dane z POST/GET są jako string) i zawiera ona przecinek do rozdzielania miejsc dziesiętnych, natomiast powinna być to kropka. Gdy php auto-magicznie zamienia string na cyfry - odrzuca wszystko jeżeli wystąpi niedozwolony znak, np. przecinek. Więc z kwoty robi się 27 (policz na zwykłym kalkulatorze).

$kwota = 27.33;
echo $kwota ." ---> < 30<br />";
$procent = $kwota * 0.30;
echo $procent ."<br />";
$liczba = $kwota + $procent;
echo $liczba ."<br />"; // to było jakieś $ma
27.33 ---> < 30
8.199
35.529
0

Witaj Nie wiem jak, nie wiem czemu, ale posiadasz ogromna wiedzę na tym forum!
Jaki temat by nie był jest w nim twoja odpowiedź.

Oczywiście problem mój znikł, nie wiedziałem że się znaki zmieniając tzn ja podaje z kropką (tak mam liczby wpisane w pliku), a tu takie zmiany wstawiłem'

$replace = str_replace(',', '.', $kwota);

Taki mi tylko pomysł przyszedł do głowy :) Ale jeszcze raz dziękuję :)

0

Coś takiego przejdzie, do nauki php jest ok (szczególnie, że robisz kalkulator), ale większe strony powinny przede wszystkim mieć walidację danych (jeżeli użytkownik wpisze "abcd" w pole liczbowe to odrzucimy całość operacji, dopóki się nie poprawi), ja w moich dziełach puszczam obie wersje (z kropką i przecinkiem), tj. najpierw walidacja (żeby była np. tylko jedna kropka, żadnych liter itd.) wyrażeniem regularnym, potem taka zamiana jak ty, tylko jeszcze od razu z rzutowaniem na float.

Pogrubione hasła w wolnym czasie wyszukaj w Google, poczytaj, jeżeli tylko chcesz się brać za programowanie na poważnie.

Edit: Temat powinien być w dziale Newbie - niedługo go tam umieszczę - nie chciałem tego robić wcześniej, bo jako konto anonimowe nie otrzymałbyś powiadomienia o tym fakcie.

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