Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Porównanie float
markonix
post
Post #1





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


  1. var_dump($price);
  2. var_dump(50.4);
  3. if ($price > 50.4)
  4. echo 't';


Wynik:
Kod
float(50.4)
float(50.4)
t


Jak to jest możliwe?
Jeżeli zrobię rzutowanie na float albo jeszcze raz zadeklaruje wartość to działa ale wg var_dump to jest już float!
Zmienna $price to argument metody. Wygląda to jakby gdzieś po drodze ta zmienna została .. uszkodzona..

Ten post edytował markonix 9.05.2012, 13:30:31
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Zakładam, że zmienna $price jest w wyliczana w jakiś dynamiczny sposób? Wszystko jest w porządku - widocznie ma wartość większą niż 50.4, a jedynie przy wyświetlaniu jest zaokrąglana do jednego miejsca po przecinku.

1. Liczny 50.4 nie da się precyzyjnie zapisać przy pomocy typu float. W rzeczywistości jest to tylko jakieś przybliżenie tej liczby:
  1. printf("%.50f\n", 50.4); // 50.3999999999999985789145284797996282577515

2. https://www.google.com/search?sourceid=chro...600&bih=775

EDIT: Zmienna $price ma wartość większą niż te 50.399...515, które podajesz wpisując 50.4.

Ten post edytował Crozin 9.05.2012, 13:37:22
Go to the top of the page
+Quote Post

Posty w temacie


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: 18.10.2025 - 00:33