![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 8.01.2011 Ostrzeżenie: (0%) ![]() ![]() |
Otóż, mam skrypt który wygląda tak:
Pobiera on dane z pliku xml:
Wszystko działa pięknie i ładnie oprócz odejmowania (zmienna $dasd w skrypcie, wynik jest zaokrąglany do całości podczas gdy ja potrzebuję go z jak największą dokładnością. Byłbym wdzięczny jeśli ktoś mógłby mnie oświecić w jaki sposób zmusić PHP do większego posłuszeństwa w tej kwestii? EDIT teraz zauważyłem że nie jest to do końca zaokrąglenie - przy odjęciu od trzech 54.971205 powinno wyjść raczej -52 podczas gdy rezultatem jest 51, czyli wygląda na to że coś zjada przecinki. http://azalol.cba.pl/test.php tutaj widać o co mi chodzi, po zastosowaniu funkcji printf('%0.10f', $dasd); skrypt zwraca wartość odejmowania -51.0000000000 co jest niezgodne z prawdą. Ten post edytował azalol 8.01.2011, 20:36:40 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 575 Pomógł: 299 Dołączył: 26.03.2009 Ostrzeżenie: (20%) ![]() ![]() |
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 8.01.2011 Ostrzeżenie: (0%) ![]() ![]() |
Próbowałem już z round we wszystkich sensownych miejscach i wszystkimi sensownymi sposobami, niestety bezskutecznie.
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 711 Pomógł: 127 Dołączył: 5.07.2008 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Po poprawieniu xmla i odpaleniu tego kodu u siebie, wyświetlają sie prawidłowe liczby EDIT: jednak źle spojrzałem
![]() Zrób może print_r($xml) i sprawdź czy na tym etapie liczby są jeszcze poprawne. Używasz może wcześniej setlocale? Ten post edytował cycofiasz 8.01.2011, 20:55:30 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 575 Pomógł: 299 Dołączył: 26.03.2009 Ostrzeżenie: (20%) ![]() ![]() |
-------------------- |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 8.01.2011 Ostrzeżenie: (0%) ![]() ![]() |
Nie używałem wcześniej setlocale.
Liczby są poprawne przez cały czas (łącznie z print_r($xml)), jedynie przy odejmowaniu widac jakieś dziwne zaokrąglenie. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 306 Pomógł: 32 Dołączył: 20.01.2008 Ostrzeżenie: (20%) ![]() ![]() |
Spróbuj
-------------------- |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 8.01.2011 Ostrzeżenie: (0%) ![]() ![]() |
@smietek
Daje wynik -51.0000000000 Byłbym wdzięczny jeśli ktoś mógłby sprawdzić wynik odejmowania u siebie (coś mi świta z TI że zaokrąglenia mogą być różne zależnie od konfiguracji serwera, nic u siebie nie grzebałem, ale kto wie czy jakiś współlokator nie bawił się moim kosztem). http://azalol.cba.pl/test.php oto jak to wygląda ;/ Edit Manualnie odejmując w PHP 3-54.970918 otrzymuję dobry wynik, jest to dla mnie bardzo dziwne. Ten post edytował azalol 8.01.2011, 20:45:00 |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 711 Pomógł: 127 Dołączył: 5.07.2008 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 8.01.2011 Ostrzeżenie: (0%) ![]() ![]() |
Działa! Wielkie dzięki dla pana cycofiasza.
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Może problemem jest to, że php gdzieś po drodze rzutuje 54.970918 na int... Wtedy miałbyś 3-54 (obetnie część ułamkową). Spróbuj na pałę wymusić rzutowanie do double lub float.
EDIT: Jak widzę chwilka spóźnienia ![]() -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 08:05 |