Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] for+if
Theos
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 28.02.2011

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


Mam taki problem, pewnie prosty, ale nie wiem co jest źle zrobione. Niby przechodzi mi przez całą pętle for, ale nie wchodzi do warunku if.

  1. for ($i=1; $i<5; $i=$i+0.1) {
  2. if($i == 3){
  3. echo "Rowne 3";
  4. }
  5. }
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mortus
post
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


@nospor Rzutowanie w ten sposób nie zadziała, albo raczej zadziała zbyt dobrze, bo dla 3.1, 3.2 itd. również. Problemem jest precyzja liczb zmiennoprzecinkowych, a rozwiązaniem może być funkcja number_format():
  1. if(number_format($i, 1) == number_format(3, 1)) {
  2. echo 'Rowne 3!';
  3. }

Rzutowanie w drugą stronę również nie przyniesie rezultatu, bo z (float) 3 otrzymamy po prostu 3. Natomiast od naszego $i będzie się to różnić na 15 miejscu po przecinku. Operacje na liczbach zmiennoprzecinkowych zawsze są obarczone błędem precyzji.

Ten post edytował mortus 30.08.2011, 14:39:18
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: 2.10.2025 - 19:23