2013-05-15 8 views
5

Pracuję nad aplikacją na Androida, w której chcę sformatować podwójną liczbę do #. ##, którą zrobiłem używając poniższego kodu .(Android) decimalformat, zamiast przecinka używasz przecinka podczas formatowania z "#. ##"

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

Podczas badań, gdy język sprzętowy jest ustawiony na angielski (domyślny język), to działa dobrze, na przykład, jeśli BMI jest 2497,227216676656, formatuje go sBMI do 2497.23, ale jeśli język jest wybrany na francuski to formatuje go 2497,23. W miejsce DOT jest używany COMMA, który powoduje awarię mojej aplikacji !!!

Jaki jest tego powód?

Odpowiedz

8

Spróbuj tego:

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

Działa. Dzięki za natychmiastową reakcję. – Toral

+0

@ Toral, powinieneś zaakceptować i przegłosować odpowiedź, jeśli działa. – mike47

0

należy użyć metody statycznej fabryki, a nie konstruktor w celu uzyskania odpowiedniego formatu.

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

Korzystanie z ustawień regionalnych US zapewnia, że ​​wszystkie sformatowane dane będą we właściwej formie.

Powiązane problemy