2013-05-15 9 views
5

Sto sviluppando un'app per Android dove voglio formattare il mio numero doppio in #. ##, che ho fatto usando il codice qui sotto .(android) decimalformat, usa la virgola al posto di fullstop durante la formattazione con "#. ##"

Double BMI = ((fWeight)/(dHeight*dHeight)); 
DecimalFormat df = new DecimalFormat("0.00"); 
String sBMI = df.format(BMI); 

Durante il test quando la lingua di hardware è impostata su inglese (lingua predefinita), funziona benissimo, per esempio se BMI è 2.497,227216676656, formatta sBMI a 2.497,23, ma se la lingua è selezionata a Francese si formatta a 2497,23. Al posto di DOT, viene utilizzato COMMA che sta bloccando la mia app !!!

Qual è il motivo?

risposta

8

Prova questo:

Double BMI = ((fWeight)/(dHeight*dHeight)); 
DecimalFormat df = new DecimalFormat("0.00"); 
DecimalFormatSymbols dfs = new DecimalFormatSymbols(); 
dfs.setDecimalSeparator('.'); 
df.setDecimalFormatSymbols(dfs); 
String sBMI = df.format(BMI); 
+0

Sta funzionando. Grazie per la risposta immediata. – Toral

+0

@Toral, dovresti accettare e revocare la risposta se funziona. – mike47

0

si dovrebbe utilizzare il metodo statico fabbrica e non il costruttore al fine di ottenere il formato giusto.

DecimalFormat df = DecimalFormat.getInstance(Locale.US); 

L'utilizzo delle impostazioni locali USA garantisce che tutti i dati formattati siano nella forma corretta.

Problemi correlati