Im Allgemeinen gar nicht.
Während für ganze Zahlen der Dezimalwert exakt binär darstellbar ist, gilt dies bei Gleitkommazahlen oft nicht.
Wenn Du Dir das Dezimalsystem ansiehst, dann hast Du links vom Komma die Einer-, Zehner-, Hundeter, ...-Stelle, rechts vom Komma die Zehntel, Hundertstel, Tausendstel usw.
Im Binärsystem analog links vom Komma Einer, Zweier, Vierer, Achter, ... und rechts vom Komma Halbe, Viertel, Achtel, Sechzehntel, ...
Der Wert 1/4 lässt sich sowohl dezimal als auch binär exakt angeben: im Dezimalsystem sind das 2 Zehntel und 5 Hundertstel, also 0.25. Binär dagegen ist es ein Viertel, also 0.01.
1/10 lässt sich im Dezimalsystem exakt angeben (0.1), binär dagegen ist es eine periodische Zahl:
[code]
Berechnung 1 : 10 (dezimal), d. h. 1 : 1010 binär
Schritt 1:
10000 : 1010 = 0,0001
- 1010
-----
0110
Schritt 2:
10000 : 1010 = 0,00011
- 1010
-----
01100
1010
----
0010
Schritt 3:
10000 : 1010 = 0,0001100
- 1010
-----
01100
- 1010
----
0010000 --> wieder bei Schritt 2 angekommen
Ergebnis: 0,0001100110011001100...
[/code]
Da die Zahl der Stellen beschränkt ist, handelt es sich um einen Näherungswert. Der dezimale Wert dieser Zahl ist 0.1000000000000000055511151231257827021181583404541015625.
Kannst Du selbst ausprobieren: [icode]System.out.println(new java.math.BigDecimal(0.1));[/icode] Verwendest Du [icode]System.out.println(0.1)[/icode] wird automatisch "gerundet" und es wird "0.1" angezeigt. Das ändert aber nichts daran, dass dahinter ein dezimaler Wert mit allen oben gezeigten Nachkommastellen steckt.
Das kannst Du machen, um einen (Näherungs)Wert für eine auf 10 Stellen abgeschnittene Zahl zu erhalten.
Beispiel (Abschneiden nach 1 NkSt):
((int)0.5125*10)/10.0 = 0.5 (binär exakt darstellbar)
((int)0.125*10)/10.0 = 0.1 (binär nur als Näherungswert darstellbar)