Dezimalstellen voll anzeigen

destilant

Grünschnabel
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ß
 
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?
 
Hallo,

jo deepthroat hat recht, toPlainString tuts.
Java:
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:
Code:
0.00000000000000000000000000000000000000000000000000000010

Gruß Tom
 
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

Code:
double d = 0.0000000000000000000000000000000000000000000000000000001;
        BigDecimal bd = new BigDecimal(d);
        String str = bd.toPlainString();
        System.out.print(str);
 
Hallo,

jo deepthroat hat recht, toPlainString tuts.
Java:
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:
Code:
0.00000000000000000000000000000000000000000000000000000010

Gruß Tom

Ahhhh cool danke :)

Aber wieso hängt der hinter die 1 noch eine 0 an?
 
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:
Java:
// Groovy

println new BigDecimal(0.0125).toPlainString()
println new BigDecimal("0.0125").toPlainString()
Ausgabe:
Code:
0.0125000000000000006938893903907228377647697925567626953125
0.0125
Gruß
 
Zurück