blad w odejmowaniu liczby float

0

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

0

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...

0

tu nie chodzi o jave, a o arytmetyke zmiennoprzecinkowa w ogole.

0
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

0
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));

1 użytkowników online, w tym zalogowanych: 0, gości: 1