在java中从一个语言环境到另一个语言环境(en_US)的十进制格式转换

时间:2017-12-08 21:57:15

标签: java locale

我在区域设置中的字符串格式中有一个不是'en_US'的小数。我想将它转换为'en_US'语言环境中的小数。

例如:“123.345.123,45” - > “123345123.45”或“123,345,123.45”

“123 345,45” - > “123345.45”或“123,345.45”

“123.345” - > “123345”或“123,345”

1 个答案:

答案 0 :(得分:0)

似乎NumberFormat会做你正在寻找的东西。

在oracle文档中找到此代码段:

static public void displayNumber(Locale currentLocale) {

Integer quantity = new Integer(123456);
Double amount = new Double(345987.246);
NumberFormat numberFormatter;
String quantityOut;
String amountOut;

numberFormatter = NumberFormat.getNumberInstance(currentLocale);
quantityOut = numberFormatter.format(quantity);
amountOut = numberFormatter.format(amount);
System.out.println(quantityOut + "   " + currentLocale.toString());
System.out.println(amountOut + "   " + currentLocale.toString());
}

此示例打印以下内容;它显示了相同数字的格式如何随区域设置而变化:

  

123 456 fr_FR

     

345 987,246 fr_FR

     

123.456 de_DE

     

345.987,246 de_DE

     

123,456 en_US 3

     

45,987.246 zh_CN

以下是内容来自的链接:

https://docs.oracle.com/javase/tutorial/i18n/format/numberFormat.html

要将格式化的数字字符串从一个Locale转换为另一个Locale,您必须知道生成该字符串的Locale。从那里你可以使用NumberFormat.parse将字符串转换回Number。然后使用目标Locale创建另一个NumberFormat并使用.format方法更改字符串表示。

static public String displayNumber(String startValue, Locale startLocale, Locale endLocale) throws ParseException {
    NumberFormat parser = NumberFormat.getNumberInstance(startLocale);
    NumberFormat formatter = NumberFormat.getNumberInstance(endLocale);

    Number rawNumber = parser.parse(startValue);

    return formatter.format(rawNumber);
}