Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z kalkulatorem
Forum PHP.pl > Forum > PHP
dRes123pl
Czesc, stworzylem prosty kalkulator pol figur plaskich w php : www.polafigurplaskich.cba.pl i mam problem, poniewaz na moim komputerze wychodzi dobry wynik, a na innych wychodzi inaczej i tylko na moim jest dobrze .... co zrobic questionmark.gif np. przy boku w kwadracie 285,752 powinno wyjsc 81654.205504(u mnie tak i na normalnym kalkulatorze) a innym wychodzi 81225
croc
Pokazać kod źródłowy plików, w których "źle wychodzi".
dRes123pl
  1. <html>
  2. <body>
  3. <meta charset=windows-1250">
  4. <?
  5. $a=$_POST['a'];
  6. $pole=$a*$a;
  7. echo('Pole kwadratu wynosi '.$pole);
  8. echo(' mm/cm/dm/m/km&sup2;');
  9. ?><br>
  10. <a href="kwadrat.php">Wprowadź nowe dane</a><br>
  11. <a href="index.php">Wybierz inną figurę</a><br>
  12. </body>
  13. </meta>
  14. </html>
croc
A może chodzi o to, że podajesz w formularzu liczbę z przecinkiem zamiast z kropką? I wtedy skrypt ucina dalszą część, czyli 12,99 to dla niego 12, ale 12.99 to dla niego 12.99.
parzygnat
Rzutuje Ci na int
zrób coś takiego i spróbuj czy zadziała:
  1. $a=(float)$_POST['a'];
  2. $pole=$a*$a;
dRes123pl
a Tobie wychodzi dobrze ? bo ja znajomym pisalem ze maja kropke pisać, ale nie wiem czy mnie posluchali, ale pisali ze zrobili z kropką

@up tylko nie wiem czy tak sie dzieje tylko na kwadracie czy tez na innych figurach, moze na wszelki wypadek dac wszedzie ?
croc
Jestem pewien, że o to chodzi. Ludzie mają nawyki z Excela i dają przecinki. Sprawdziłem dla kwadratu o boku 0.5 i działa wyśmienicie.

EDIT

Sam floatval wiele tu nie da. Zrób tak:

  1. $a = floatval(str_replace(',', '.', $_POST['a']));


I znajomi będą mogli walić przecinki winksmiley.jpg
dRes123pl
croc, a na 'duzych' liczbach Ci dobrze wychodzi questionmark.gif najlepiej sprawdz ten bok co ja podałem w przykładzie, bo to jest na informatykę, niby mógłbym mu pokazac na malych liczbach, ale jak bedzie chcial sprawdzic czy sie zgadza na moim i na normalnym kalkulatorze to moze byc kiepsko
tehaha
po linijce 5 dorzuć:
  1. $a = str_replace(',', '.', $a);
i powinno być ok
parzygnat
Tak tu chodzi o kropke rzutowanie na float nic nie da jeżeli nie będzie kropki.
Możesz się przed tym zabezpieczyć np:
  1. $a = $_POST['a'];
  2. $a = str_replace(',','.',$a);
croc
Widzę, że dyskusja wre smile.gif Zobacz na mój poprzedni post, wyedytowałem go. Zrobisz pożyteczną rzecz jak połączysz floatval z str_replace.

I tak - na dużych liczbach działa prawidłowo. Daj klapsa znajomym smile.gif
parzygnat
Tak dzisiaj ochoczo każdy chce pomagać smile.gif
dRes123pl
Dobra, dzieki, dalem wam pomogl, okazalo sie ze znajomi napisali przecinek, a jak im napisalem czy zrobili kropke to mi pisza ze tak winksmiley.jpg ... jeszcze raz dzieki wszystkim za pomoc winksmiley.jpg
croc
No niestety, na polskim Windowsie separator na klawiaturze numerycznej to przecinek, a programistom to nie w smak. smile.gif Fajnie, że pomogliśmy. Teraz możesz próbować ujednolicić ten system.
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.