![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 80 Pomógł: 0 Dołączył: 12.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Mam problem z prostą matematyką. Otóż dzieje się coś takiego, że jak odejmuję liczbę 93-93 otrzymuję zamiast 0 coś takiego: -2.84217094304E-014
Dlaczego?? Zobrazowanie (IMG:http://e-lotnisko.pl/obliczenia.jpg) a to mój kod: nagłowek ->
reszta która oblicza:
|
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 246 Pomógł: 31 Dołączył: 13.11.2006 Skąd: się znamy? Ostrzeżenie: (0%) ![]() ![]() |
Ojoj ale namieszałeś. Trudno to się analizuje. Na pierwszy, drugi i trzeci rzut oka nie widzę błędu.
Mam propozycję. Oblicz wartości przed wstawieniem ich w tabele. Prześledź zmiany wszystkich zmiennych. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 374 Pomógł: 149 Dołączył: 1.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
Normalny numeryczny artefakt typowy dla odejmowania dużych wartości zmiennoprzecinkowych od siebie. Możesz przyjąć, że 1*10-14 to jest właściwie zero i zaokrąglać.
|
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
dokładnie jak napisał poprzednik. skoro to są operacje walutowe, to zaokraglaj kazdy wynik do dwóch miejsc znaczących po przecinku (np. funkcja round()) i problem zniknie... no i poczytaj w manualu o funkcji sprintf() - bo używasz mnóstwa niepotrzebnego kodu żeby sformatować wyniki do wyświetlenia ... powodzenia.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 80 Pomógł: 0 Dołączył: 12.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
Tak, round() pomogło Panowie. Serdecznie dzięki za podpowiedzi.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 374 Pomógł: 149 Dołączył: 1.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 19:47 |