Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: php odejmowanie, dziwne wyniki
Forum PHP.pl > Forum > PHP
szajens
Więc mamy taki kod:)
  1. <?php
  2. echo 3.001-3;
  3. ?>


lub taki:

  1. <?php
  2. echo 3.001-3.000;
  3. ?>


Który daje wynik: 0.00099999999999989

niezależnie od serwera logiczne jest że wynik powinien być 0.001

zauważyłem że dzieje się tak tylko z małymi wynikami

Pytanie brzmi: jaka jest przyczyna?
rad11
Przyczyna nie znam ale w google mozesz znalesc tak mi sie wydaje ale gdy zrobisz tak to powinno byc dobrze

  1. <?php
  2. $a = 3.001;
  3. $b = 3.000;
  4. $c = $a - $b;
  5. echo $c;
  6. echo '<br>';
  7. echo round($c, 3);
  8. ?>
szajens
Wyczytałem że jest problem z liczeniem liczb zmiennoprzecinkowych przez komputer.

Jednak interesuje mnie jak wy to robicie, czy każdy wynik trzeba zaokrąglić funkcją round?

Czy tak jest prawidłowo?
Damonsson
Z bardzo małymi czy z bardzo dużymi liczbami jest zawsze problem jeśli chodzi o precyzję, po prostu tak już jest.

Możesz użyć http://php.net/manual/pl/book.bc.php
irmidjusz
problem wyjaśniony jest na http://www.php.net/manual/en/language.types.float.php
najprostsze rozwiązanie to stosowanie http://www.php.net/manual/en/ref.bc.php lub zaokrąglanie wyniku funkcją round()
szajens
Koledzy Damonsson i irmidjusz, dziękuje za pomoc, właśnie takiej funkcji szukałem, przyda się na przyszłość.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.