Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Konwersja liczbowa w PHP
dragonsokol
post 5.07.2012, 13:02:08
Post #1





Grupa: Zarejestrowani
Postów: 31
Pomógł: 2
Dołączył: 23.06.2008

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


Witam,
natknąłem się na dziwny problem w PHP, związany z konwersją stringa na liczbę pomnożoną o 100. Oto kod:
  1. $cena = "16.99";
  2.  
  3. $price = (int)($cena * 100);
  4. var_dump($cena);
  5. var_dump((float)$cena);
  6. ((float)$cena * 100)
  7. )
  8. );
  9. var_dump($price);
  10. var_dump((float)$cena * 100);


Output:
  1. string(5) "16.99"
  2. float(16.99)
  3. int(1698)
  4. int(1698)
  5. float(1699)

Dlaczego przy konwersji na int dostaję 1698 a nie 1699, tak jak powinno być? przy innych cenach działa OK.
Go to the top of the page
+Quote Post
rocktech.pl
post 5.07.2012, 14:13:37
Post #2





Grupa: Zarejestrowani
Postów: 587
Pomógł: 131
Dołączył: 8.02.2010

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


Witam.

Cytat
So never trust floating number results to the last digit, and do not compare floating point numbers directly for equality. If higher precision is necessary, the arbitrary precision math functions and gmp functions are available.


Np. w PHP operator dzielenia rzutuję liczby na typ float. Wartość może być osadzona jako typ integer ale zostanie zaokrąglona w dół.

Zobacz tu:

  1. var_dump(((int)(1/2)) === 0);


Ten post edytował rocktech.pl 5.07.2012, 14:16:27


--------------------
Despite the tons of examples and docs, mod_rewrite is voodoo. Damned cool voodoo, but still voodoo. --Brian Moore

I never go looking for a sucker. I look for a Champion and make a sucker of of him. --Amarillo Slim


Home-made : js-gui-classes | Accordion | Tabs | Carousel / php-sms-classes | Obsługa bramki SMS MultiInfo | Obsługa bramki SMS Mobiltek
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 28.06.2025 - 07:31