Witam
Mam pytanie odnosnie odejmowania... otóż w javie dzialanie:
1 - 0.9
daje wynik
0.09999999999999998
problem jest nie tylko dla float ale tez dla obiektu klasy Float a przy BigDecimal jest jeszcze wiekszy blad... w necie znalazlem tylko informacje ze java nie jest dokladna i gubi dokladnosc przy operacjach zminnoprzecinkowych...
jedynym rozwiazniem jest zaokraglanie??
pozdrawiam
Może przy float i double java jest faktycznie nieprecyzyjna, ale BigDecimal sobie radzi. Dokładnie takie działanie, jakie opisujesz zrobione na BigDecimal zwróci poprawny wynik, bo nie wymaga ono zaokrąglania. W przypadku np. dzielenia można sobie ustalić sposób zaokrąglania, i liczbę miejsc po przecinku. Takie są przynajmniej moje doświadczenia...
tu nie chodzi o jave, a o arytmetyke zmiennoprzecinkowa w ogole.
eximius napisał(a)
tu nie chodzi o jave, a o arytmetyke zmiennoprzecinkowa w ogole.
dokładnie :] w sumie błąd kompensacji danych zachodzi w każdym języku programowania. poszukaj czegoś o kompensacji wartości w jęykach programowania
eximius napisał(a)
tu nie chodzi o jave, a o arytmetyke zmiennoprzecinkowa w ogole.
Tu chodzi o to czy to co się robi, robi się poprawnie: BigDecimal.valueOf(1,0).subtract(BigDecimal.valueOf(9,1));