Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]precyzyjne obliczenia matematyczne
Forum PHP.pl > Forum > Przedszkole
barthpl
szukam klasy do precyzyjnych obliczeń matematycznych takich na których normalny PHP'owy float się gubi - znacie coś questionmark.gif
Adiqus
Teoretycznie nie powinien się PHP gubić, ponieważ zmienne automatycznie zmieniają typ, w zależności od wartości. Proponowałbym takie coś

  1. $a=3,3124153153125236262636346346567753573776355753656;
  2. $a=(double)$a;


(Double ma większy zakres liczbowy niż Float).
poli25
Może pobierasz liczby z bazy??
Noidea
http://pl2.php.net/bcmath
barthpl
chodzi mi dokładnie o przeliczenia danych współrzędnych z postaci

E 17°01'02'' N 51°05'21''

na postać

17.022222222222 51.141666666667 (mój wynik)

17.0173637 51.0891868 (wynik z http://nieruchomosci.infor24.pl/lokalizator.php)


A ja liczę to tak:
  1. // float też nie działa
  2. $d = (double)$this->_pd; // stopnie
  3. $d += (double) 1 / (double) 60 * (double) $this->_pm; // minuty
  4. $d += (double) 1 / (double) 360 * (double) $this->_ps; // sekundy

lub tak
  1. bcscale( 1000 );
  2. $d = bcpow( $this->_pd, 1.0 );
  3. $d = bcadd( bcmul(bcdiv(1.0, 60.0), $this->_pm), $d );
  4. $d = bcadd( bcmul(bcdiv(1.0, 360.0),$this->_ps), $d );


różnica (w wyniku moim i oczekiwanym) jest i to znaczna, jakiś pomysł jak do tego podejść questionmark.gif
Noidea
Jeden stopień to 3600 sekund
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.