# Dezimalstellen voll anzeigen



## destilant (9. Juni 2009)

Schönen guten Morgen !

Ich würde gerne Zahlen darstellen lassen mit vollen Dezimalstellen, z.B. mal 16 oder 64 Stellen. Java stellt bei 5-6 Stellen automatisch um auf die Exponentialdarstellung (z.B. 1.0E-64), das hätte ich aber gern verhindert. Habe es schon mit BigDecimal probiert, kam aber auf keine vernünftige Lösung 

Kann mir jemand weiterhelfen? Vielen Dank im Voraus !


Gruß


----------



## Thomas Darimont (9. Juni 2009)

Hallo,

gib doch bitte mal ein Beispiel an.

Gruß Tom


----------



## deepthroat (9. Juni 2009)

Hi.

Schau dir mal die toPlainString() Methode von BigDecimal an.

Gruß


----------



## destilant (9. Juni 2009)

Wenn ich zum Beispiel ein double mit zich Dezimalstellen ausgeben will:
0.0000000000000000000000000000000000000000000000000000001

Wenn ich das in eine double-Variable reinstecke und dann per System.out ausgebe, stellt Java die Zahl so dar: 1.0E-55

Habs schon mit DecimalFormat probiert, aber da sich die Dezimalstellen ändern und nich gleich bleiben, bringt mir das nich viel.

Ne Idee, wie ich allgemein die Dezimalzahlen komplett ausgeben lassen kann?


----------



## Thomas Darimont (9. Juni 2009)

Hallo,

jo deepthroat hat recht, toPlainString tuts.

```
package de.tutorials;

import java.math.BigDecimal;

public class DoubleFormatExample {
	public static void main(String[] args) {
		System.out.println(BigDecimal.valueOf(0.0000000000000000000000000000000000000000000000000000001).toPlainString());
	}
}
```

Ausgabe:

```
0.00000000000000000000000000000000000000000000000000000010
```

Gruß Tom


----------



## destilant (9. Juni 2009)

deepthroat hat gesagt.:


> Hi.
> 
> Schau dir mal die toPlainString() Methode von BigDecimal an.
> 
> Gruß



Hab das mal probiert, aber das Ergebnis nicht positiv  Es kommt dann hinten nur Quatsch raus:


> 0.0000000000000000000000000000000000000000000000000000000999999999999999994576045832271877048386177385314293734768539803050594901815513565007267460758420501687529931709955247404289379029075578142991831409602809799253009259700775146484375
> Process finished with exit code 0




```
double d = 0.0000000000000000000000000000000000000000000000000000001;
        BigDecimal bd = new BigDecimal(d);
        String str = bd.toPlainString();
        System.out.print(str);
```


----------



## destilant (9. Juni 2009)

Thomas Darimont hat gesagt.:


> Hallo,
> 
> jo deepthroat hat recht, toPlainString tuts.
> 
> ...



Ahhhh cool danke 

Aber wieso hängt der hinter die 1 noch eine 0 an?


----------



## deepthroat (9. Juni 2009)

destilant hat gesagt.:


> Ahhhh cool danke
> 
> Aber wieso hängt der hinter die 1 noch eine 0 an?


Weil Gleitkommazahlen inhärent ungenau sind. Manche "einfache" rationalen Zahlen können nicht als Gleitkommazahl dargestellt werden:

```
// Groovy

println new BigDecimal(0.0125).toPlainString()
println new BigDecimal("0.0125").toPlainString()
```
Ausgabe:

```
0.0125000000000000006938893903907228377647697925567626953125
0.0125
```
Gruß


----------

