Proste działanie w Javie daje dziwny wynik

Odpowiedz Nowy wątek
2014-12-18 19:30
Artur12
0

Witam, otóż mam taki prosty kod :

        public static void main(String[] args) throws IOException 
        { 
        double asd = 2.8;
        asd /= 10.0;
        System.out.println("" + asd );
}

I wartość jaka jest wyświetlana nie jest dokładna ( 0.28 ) tylko ( 0.27999999999999997 ). Z czego to wynik i czy da się jakoś to "obejść" ? Proszę o pomc i pozdrawiam.

Pozostało 580 znaków

2014-12-18 19:40
0

Wynika to z tego jak reprezentowane są liczby w komputerze. Nie da się tego obejść.


Na PW przyjmuje tylko (ciekawe!) zlecenia. Masz problem? Pisz na forum, nie do mnie.

Pozostało 580 znaków

2014-12-18 20:13
0

Oczywiście, że się da:

import java.math.BigDecimal;
 
public class exampl {
    public static void main(String[ ] args)
    { 
            BigDecimal asd = new BigDecimal("2.8");
            asd = asd.divide(new BigDecimal("10.0"));
            System.out.println("" + asd );
    }
}

Na typach prostych możesz posłużyć się formatowaniem wyjścia: http://stackoverflow.com/ques[...]r-to-n-decimal-places-in-java

edytowany 2x, ostatnio: Spine, 2014-12-18 20:16
No ale to jest już zupełnie co innego ;] - Shalom 2014-12-18 20:16
I tak liczby wklepuje z palca :) Pisanie ich w cudzysłowie nie robi różnicy :) - Spine 2014-12-18 20:18

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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