Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Porównanie typów. Konwersja string do float.
007slawek
post
Post #1





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 18.04.2002
Skąd: Warszawa

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


Mam coś takiego:

  1. $a = (float) "27.8000";
  2. $b = (float) "27.9000";
  3. $c = (float) "0.10";
  4.  
  5. $d = $b - $c; //To powinno być równe $a
  6.  
  7. var_dump($a); // zwraca : float(27.8)
  8. var_dump($d); // zwraca : float(27.8)
  9.  
  10. if($a == $d){
  11. echo 'true';
  12. }
  13. else{
  14. echo 'false';
  15. }

Niestety porównanie $a z $d daje false mimo tego, że var_dump pokazuje te same typy i te same wartości.
Użycie
  1. if($a === $d)
też zwraca false.
Dopiero jak wstawię przed var_dump np.

  1. $a = round($a,4);
  2. $d = round($d,4);


to wtedy porównanie zwraca true a var_dump w obu przypadkach bez zmian pokazuje float(27.8).

Ktoś mi wytłumaczy o co chodzi, bo chyba jeszcze śpię?

Go to the top of the page
+Quote Post
nospor
post
Post #2





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




Przy liczbach rzeczywistych zawsze będziesz miał takie kwiatki - norma. Nawet jak wizualnie wygląda wszystko na równe, to dla komputera przy liczbach rzeczywistych to równe nie będzie.
Go to the top of the page
+Quote Post
007slawek
post
Post #3





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 18.04.2002
Skąd: Warszawa

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


a masz jakiś pomysł, żeby to działało?
Go to the top of the page
+Quote Post
nospor
post
Post #4





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




No ty sam przecież napisałeś rozwiązanie:
  1. $a = round($a,4);
  2. $d = round($d,4);

Innego raczej nie ma. Takie są uroki liczb rzeczywistych
Go to the top of the page
+Quote Post
007slawek
post
Post #5





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 18.04.2002
Skąd: Warszawa

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


myślałem, że jest ktoś mądrzejszy ode mnie:D
Go to the top of the page
+Quote Post
nospor
post
Post #6





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




Bo jest, masa osób (IMG:style_emoticons/default/tongue.gif)
Ode mnie zresztą też (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
007slawek
post
Post #7





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 18.04.2002
Skąd: Warszawa

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


tak tak, Ciebie to już znam
Go to the top of the page
+Quote Post
nospor
post
Post #8





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




Nie, nie znasz mnie. Wymieniłeś ze mną jedynie parę PW. Jakby tak oceniać wiedzę drugiego człowieka, na podstawie paru wymienionych zdań, to z pełnym przekonaniem mógłbym napisać że jesteś analfabetą.... (IMG:style_emoticons/default/wink.gif) a oboje wiemy że nie jesteś, więc po paru PW i zamknięciach tematu naprawdę nie można pisać, że się kogoś zna (IMG:style_emoticons/default/smile.gif)
Powód edycji: [nospor]:
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: 8.10.2025 - 08:27