2017-09-07 2 views
0

S'il vous plaît trouver mon code ci-dessous:question DecimalSeparator avec String.Format()

double value = (double)-16325.62015; 
System.out.println(String.format("%s", value));//-16325.62015 
System.out.println(String.format(new Locale("de", "DE"), "%s", value));//-16325.62015 
DecimalFormatSymbols dfs = DecimalFormatSymbols.getInstance(new Locale("de", "DE")); 
System.out.println(dfs.getDecimalSeparator());//, 

Dans le code ci-dessus, Im obtenir le mauvais séparateur décimal pour les paramètres régionaux allemand.

J'ai essayé le code ci-dessous aussi, mais il produit -16325,6

double value = (double)-16325.62015; 
DecimalFormatSymbols dfs = DecimalFormatSymbols.getInstance(new Locale("de", "DE")); 
DecimalFormat df = new DecimalFormat("#.#", dfs); 
System.out.println(df.format(value)); 

est-il une autre façon d'imprimer la sortie comme -16325,62015

Note: Je veux imprimer recto valeur avec un nombre n de décimales pour les paramètres régionaux

spécifique de Merci à l'avance

+0

Vous ne formatez pas de numéro: vous formatez une chaîne. Regardez attentivement les différents paramètres tels que "% s". –

+0

Dans le second extrait de code, il produit exactement ce qu'il a dit 'DecimalFormat' pour produire: un point flottant avec une précision à un chiffre. Je vous conseille à nouveau de regarder ce que signifient différents formats décimaux et comment en configurer un. –

Répondre

0

Vous devez utiliser %f pas %s. Lorsque %s est utilisé, Java convertit votre valeur en chaîne à l'aide de String.valueOf qui utilise les paramètres régionaux par défaut.

double value = (double)-16325.62015; 
System.out.println(String.format("%f", value)); 
System.out.println(String.format(Locale.GERMANY, "%f", value));