Proste działanie w Javie daje dziwny wynik

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.

0

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

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/questions/153724/how-to-round-a-number-to-n-decimal-places-in-java

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