Anzahl der Nachkommastellen ermitteln

DarthShader

Erfahrenes Mitglied
Hallo zusammen

wie kann ich die Anzahl an Nachkommastellen eines double Wertes ermitteln? Ich möchte eine Methode haben, der ich z.B. "1.54" übergebe und die dann "2" zurückgibt.

(Achtung wenn man es mathematisch löst mit Rundungsfehlern, und Achtung wenn man es auf String-Basis löst mit dem aktuellen Locale, also ob "," oder "." der Dezimaltrenner ist...).

Vielen Dank für Eure Hilfe!
 
Ähm, du hast doch deine Frage schon selbst beantwortet.

Wandle die Zahl in einen String um, mach einen subString() ab dem "." (Punkt) und dann kannst du doch die Länge des Strings abfragen oder du wandelst es in ein Char Array und frägst dort die Länge ab.
 
Hallo,

Java:
/**
 * 
 */
package de.tutorials;

import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.Locale;

/**
 * @author Tom
 *
 */
public class NumberTest {

    /**
     * @param args
     */
    public static void main(String[] args) {
        double d = 1.54;
        Locale.setDefault(Locale.GERMANY);
        //Locale.setDefault(Locale.US);
        String string = DecimalFormat.getNumberInstance().format(d);
        System.out.println(string);
        System.out.println(string.substring(string.lastIndexOf(DecimalFormatSymbols.getInstance().getDecimalSeparator())+1).length());
    }

}

Das ginge natürlich auch mit etwas bit-Fummelei, aber das spar ich mir jetzt mal...


Gruß Tom
 
Hallo,

das hier

Java:
DecimalFormatSymbols.getInstance().getDecimalSeparator()

ist genau der Knackpunkt. So klappts auch mit den Locales ;) Danke für die Hilfe!
 
Hm, ich habe die gleiche Anforderung (Anzahl NK-Stellen von einem Double ermitteln), aber ich kriegs nicht hin. Mein Double kommt manchmal in der Form 0.01 an - dann klappt es. Manchmal kommt aber auch sowas an: 1.0E-4

Mit Hilfe von diesem Tutorial http://download.oracle.com/javase/tutorial/i18n/format/decimalFormat.html habe ich mittlerweile herausgefunden, dass es sich hierbei um eine "Scientific Notation" handelt. In dem Tutorial wird gezeigt, wie man eigene DecimalPattern setzen kann, das ist aber nicht das was ich will. Ich möchte ja eigentlich den Double-Wert mit allen Stellen anzeigen.

Oder kann ich auf andere Weise die Anzahl NK-Stellen ermitteln?
 
Zuletzt bearbeitet:
Zurück