Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Change DecimalFormat locale

I have custom DecimalFormat in Edittext's addTextChangedListener method, everything is working perfectly but when I change language (locale) my addTextChangedListener is not working.

double answer = inputDouble * counterToDouble; DecimalFormat df = new DecimalFormat("##.########"); // df=(DecimalFormat)numberFormat;  df.setRoundingMode(RoundingMode.DOWN); answer = Double.parseDouble(df.format(answer));  unicoinsAmmount.setText(String.valueOf(df.format(answer))); 

I searched about my problem and found a NumberFormat solution:

NumberFormat numberFormat = NumberFormat.getNumberInstance(Locale.US); 

but I don't know how I can use this code.

like image 873
BekaKK Avatar asked Apr 05 '16 06:04

BekaKK


People also ask

How do you change the decimal separator in Java?

With the DecimalFormatSymbols#setDecimalSeparator() method we can change the decimal separator and with the DecimalFormatSymbols#setGroupingSeparator() method we can change the grouping separator.

What is the use of DecimalFormat in Java?

The java. text. DecimalFormat class is used for formatting numbers as per customized format and as per locale.

Is Java DecimalFormat thread safe?

DecimalFormat isn't thread-safe, thus we should pay special attention when sharing the same instance between threads.


2 Answers

You can specify locale for DecimalFormat this way:

DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.US); DecimalFormat format = new DecimalFormat("##.########", symbols); 
like image 160
Joe Bloggs Avatar answered Oct 14 '22 15:10

Joe Bloggs


You may try by first converting to NumberFormat and then Cast it to DecimalFormat

Integer vc = 3210000; NumberFormat nf = NumberFormat.getNumberInstance(Locale.US); DecimalFormat formatter = (DecimalFormat) nf; formatter.applyPattern("#,###,###"); String fString = formatter.format(vc); return convertNumbersToEnglish(fString); 
like image 28
Faisal Naseer Avatar answered Oct 14 '22 16:10

Faisal Naseer