Witam, mam taki problem, przy odejmowaniu liczb 2.928306580874433E31 - 0.3524620387001529 wychodzi 2.928306580874433E31. Czemu sie tak dzieje? Co z tym zrobić?
Nic, przyjąć to wiadomości i się z tym pogodzić.
Wyobraź sobie, że jesteś właścicielem plaży i oszacowałeś, że z dużą dokładnością jest na niej 6 tryliardów ziarenek piasku. Jak ktoś Ci podpieprzy 3 ziarenka, to nadal będziesz miał 6 tryliardów ziarenek. Problem się pojawia, gdy ktoś podpieprzy Ci 3 ziarenka 100 trylionów razy, wtedy twoje oszacowanie ilości ziarenek ma o wiele mniejszą dokładność.
No to co ja mam zrobić? Mam zadanie na metody numeryczne i nie zrobię tego przez double'a?
Jeżeli dla Twojego algorytmu istotna jest dokładna wartość różnicy 2.928306580874433E31 - 0.3524620387001529, to coś jest nie tak z algorytmem.
Jeżeli wychodzą problemy natury numerycznej to spróbuj zmienić algorytm (głównie jak najbardziej wyeliminować odejmowanie liczb o zbliżonej wielkości).
Tak jest to super istotne. Przy mnożeniu liczb 3.6835986447807926E43 i 9.202506473580127E304 wychodzi Infinity i wszystko się sypie...
Jak musisz działać na tak dużych liczbach, to zmień typ na BigDecimal.
@John ty masz te metody numeryczne na studiach i nie wiesz że double ma ograniczony zakres i dokładność? To ty chyba spałeś na zajęciach z tego przedmiotu...