Java - Format Décimal.analyser le retour du double de la valeur avec le nombre de décimales spécifié

Je veux être en mesure de convertir une chaîne de caractères à un Double donné un nombre de décimales dans une chaîne de format. Donc,"###, ##0.000" devrait me donner une Double à 3 décimales.

Modifier - ajout de plus d'info à ce qui se passe

L'utilisateur entre la valeur de l'INTERFACE (qui est entrée dans une Chaîne. La règle est cette valeur est limitée à 3 décimales. Le code sous-jacent stocke la valeur dans la base de données qui est ensuite utilisé dans un calcul. Par conséquent, la fuite décimales va provoquer les calculs d'être légèrement à ce qui serait attendu.

J'ai le code suivant:

try {
        //output current locale we are running under (this happens to be "nl_BE")
        System.out.println( "Current Locale is " + Locale.getDefault().toString() );

        //number in Central European Format with a format string specified in UK format
        String numberCE = "1,234567"; //1.234567
        String formatUK = "###,##0.000";

        //do the format
        DecimalFormat formatterUK = new DecimalFormat( formatUK );
        Double valCEWithUKFormat = formatterUK.parse( numberCE ).doubleValue();

        //I want the number to DPs in the format string!!!
        System.out.println( "CE Value     " + numberCE + " in UK format (" + formatUK + ") is "
        + valCEWithUKFormat );

    } catch( ParseException ex ) {
        System.out.println("Cannot parse number");
    }
}

La DecimalFormat semble ignorer la chaîne de format et me donne l'intégralité de la chaîne comme un Double de 1.234567.

Peut DecimalFormat être obligé d'utiliser la chaîne de format lors de l'analyse? Ai-je raté quelque chose?

Acclamations,

Andez

Voulez-vous vraiment essayer de faire cela? En raison de la perte de précision sur la conversion de base 10 en binaire (la représentation interne), vous risquez de ne pas obtenir ce que vous attendez.

OriginalL'auteur Andez | 2011-01-19