更改DecimalFormat区域设置

Bek*_*aKK 18 java android bigdecimal decimalformat

DecimalFormat在Edittext的addTextChangedListener方法中有自定义,一切都很完美,但是当我更改语言(语言环境)时,我的addTextChangedListener无效.

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)));
Run Code Online (Sandbox Code Playgroud)

我搜索了我的问题并找到了NumberFormat解决方案:

NumberFormat numberFormat = NumberFormat.getNumberInstance(Locale.US);
Run Code Online (Sandbox Code Playgroud)

但我不知道如何使用这段代码.

Joe*_*ggs 38

您还可以通过DecimalFormat以下方式指定区域设置:

DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.US);
DecimalFormat format = new DecimalFormat("##.########", symbols);
Run Code Online (Sandbox Code Playgroud)

  • 应该接受答案! (3认同)

Fai*_*eer 28

您可以尝试先转换为NumberFormat然后将其转换为DecimalFormat

Integer vc = 3210000;
NumberFormat nf = NumberFormat.getNumberInstance(Locale.US);
DecimalFormat formatter = (DecimalFormat) nf;
formatter.applyPattern("#,###,###");
String fString = formatter.format(vc);
return convertNumbersToEnglish(fString);
Run Code Online (Sandbox Code Playgroud)

  • 也在文档中。https://docs.oracle.com/javase/tutorial/i18n/format/decimalFormat.html (2认同)

Sas*_*yas 9

您可以在创建DecimalFormat对象时使用基本的构造函数来设置Locale:

DecimalFormat dFormat = new DecimalFormat("#.#", new DecimalFormatSymbols(Locale.US));
Run Code Online (Sandbox Code Playgroud)