Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] błędy przy dodawaniu liczb ułamkowych
timon27
post 6.12.2013, 21:08:15
Post #1





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

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


Typy float są zapisane binarnie i powoduje to błędy.
Można się zdziwić wynikiem:
  1. $x=0.1;
  2. $y=$x+$x+$x;
  3. echo $y;//0.3
  4. if ($y==0.3) echo 'równe';//nie wyświetla


Pytanko: czy istnieje jakiś sposób oprócz roundów na poprawne wyniki?

Abstrahując od tego że roundy nie zawsze pomagają...
Dla przykładu gdy ustawie precyzję 15 to warunek:
  1. if (round($y,15)==0.3) echo 'równe';//wyświetla się

bedzie już poprawny. Jednak błędy się akumulują i znowu błąd w:
  1. if (round($y+$y+$y+$y+$y+$y+$y,15)==2.1) echo 'równe';//nie wyświetla się


Może jakaś klasa/typ decimal?

Ten post edytował timon27 6.12.2013, 21:15:45
Go to the top of the page
+Quote Post

Posty w temacie


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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 16:08