Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Porównywanie dwóch liczb (błąd php?)
Jarod
post
Post #1





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Banalny przykład:
  1. <?php
  2. $a="12:00";
  3. $b="22:00";
  4. $c="12:01";
  5. $d="22:01";
  6.  
  7. $a=(float)str_replace(':', '.', $a);
  8. $b=(float)str_replace(':', '.', $b);
  9. $c=(float)str_replace(':', '.', $c);
  10. $d=(float)str_replace(':', '.', $d);
  11.  
  12. $x = $b-$a;
  13. $y = $d-$c;
  14.  
  15. if ($x == $y) echo 'są równe';
  16. if ($x < $y) echo 'x jest mniejsze';
  17. if ($x > $y) echo 'x jest większe';
  18. ?>


Proszę wytłumaczcie dlaczego php twierdzi, że x jest mniejsze?? Przecież wartości x i y są takie same i typu float.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Cezar708
post
Post #2





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

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


Cytat
Warning
Floating point precision

It is typical that simple decimal fractions like 0.1 or 0.7 cannot be converted into their internal binary counterparts without a small loss of precision. This can lead to confusing results: for example, floor((0.1+0.7)*10) will usually return 7 instead of the expected 8, since the internal representation will be something like 7.9.

This is due to the fact that it is impossible to express some fractions in decimal notation with a finite number of digits. For instance, 1/3 in decimal form becomes 0.3.

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


źródło: Floating point numbers

a więc "zwykłe" porównywanie dwóch floatów jest niewskazane

Pozdrawiam
Go to the top of the page
+Quote Post
Jarod
post
Post #3





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Dzięki, działa, masz plusa.
Powiedz mi tylko czy na ta bibliotek jest wkompilowana w php domyślnie? Czy można trafić na serwer z php bez biblioteki?
Go to the top of the page
+Quote Post
Cezar708
post
Post #4





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

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


z tego co się orientuję bcmath jest wkompilowane, co do gmp to chyba trza dokompilować,

... ale za pewność tego posta nie dam sobie ręki uciąć (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Pozdrawiam
Cezar708
Go to the top of the page
+Quote Post

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: 25.08.2025 - 02:27