(android) decimalformat, uses comma in place of fullstop while formatting with "#.##"
Asked Answered
D

2

8

I am developing an Android app where I want to format my double number to #.##, which I have done using below code.

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

While testing when the language of hardware is set to English(default language), it works fine, for example if BMI is 2497.227216676656 , it formats sBMI to 2497.23 , but if language is selected to French it formats it to 2497,23. In place of DOT, COMMA is being used which is crashing my app!!!

What is the reason for this?

Dolley answered 15/5, 2013 at 4:52 Comment(0)
L
11

Try this:

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);
Lishalishe answered 15/5, 2013 at 5:2 Comment(1)
Thanks you very much, it's saved my dayAfeard
S
1

You should use the factory static method and not the constructor in order to get the right format.

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

Using US locale will make sure that all formatted data will be in the right form.

Spatula answered 22/3, 2014 at 15:34 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.