Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Problem z operatorem porównania
hubertinio
post
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 1
Dołączył: 14.12.2007

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


Witam
Mam problem ze zrozumieniem kawałka kodu.
Czy ktoś mógłby mi wytłumaczyć dlaczego w if jest interpretowane jako false?

  1.  
  2. $a = 0.0;
  3. for ($i =0; $i < 10; $i++) {
  4. $a += 0.1;
  5. }
  6.  
  7. print "$a\n"; // 1
  8.  
  9. if ($a == 1.0) {
  10. print "Equals";
  11. } else {
  12. print "Not Equals";
  13. }
  14.  


Wynik: 1 Not Equals



--------------------
"Bramy skarbnicy mądrości i wiedzy są zawsze otwarte"
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




It's magic wink.gif

http://www.php.net/manual/pl/language.types.float.php
Cytat
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.9999999999999991118....
So never trust floating number results to the last digit, and never compare floating point numbers for equality.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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





Grupa: Zarejestrowani
Postów: 17
Pomógł: 1
Dołączył: 14.12.2007

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


Dzięki ..a little bit of magic biggrin.gif


--------------------
"Bramy skarbnicy mądrości i wiedzy są zawsze otwarte"
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 Aktualny czas: 20.08.2025 - 08:00