格式化任何位置的十进制数

时间:2015-04-18 17:57:35

标签: android locale number-formatting

我正在尝试格式化显示的十进制数字,以设备所在位置的格式显示它。我还希望这个十进制数舍入到最接近的10位,如果是,则不显示第10位” 0.0" 。

我想我很亲密。我目前的情况是:

NumberFormat numberFormat = NumberFormat.getInstance(getResources().getConfiguration().locale);

if (numberFormat instanceof DecimalFormat) {
    ((DecimalFormat)numberFormat).setDecimalSeparatorAlwaysShown(true);
    ((DecimalFormat)numberFormat).applyPattern("0.#");
}

myText.setText(numberFormat.format(myValue));

但是,如果我的数字大于1,000 ex: 1000.5TextView将显示1000.5而不是1,000.5(我在美国)。

有人可以向我解释原因吗?

1 个答案:

答案 0 :(得分:0)

您应该致电setGrouping(boolean)以确保打开分组。

NumberFormat numberFormat = NumberFormat.getInstance(getResources().getConfiguration().locale);

if (numberFormat instanceof DecimalFormat) {
    final DecimalFormat df = (DecimalFormat)numberFormat;
    df.setDecimalSeparatorAlwaysShown(true);
    df.setGroupingUsed(true);
    df.applyPattern("0.#");
}

myText.setText(numberFormat.format(myValue));