java中从一个区域设置到另一个区域设置(en_US)的十进制格式转换
我有一个非“en_US”语言环境中字符串格式的十进制数。我想在“en_US”语言环境中将其转换为十进制 例如:“123.345.123,45”->“123345123.45”或“123345123.45” “123345,45”->“123345.45”或“123345.45”java中从一个区域设置到另一个区域设置(en_US)的十进制格式转换,java,locale,Java,Locale,我有一个非“en_US”语言环境中字符串格式的十进制数。我想在“en_US”语言环境中将其转换为十进制 例如:“123.345.123,45”->“123345123.45”或“123345123.45” “123345,45”->“123345.45”或“123345.45” “123.345”->“123345”或“123345”数字格式似乎可以满足您的需求 在oracle文档中找到此代码段: static public void displayNumber(Locale currentLo
“123.345”->“123345”或“123345”数字格式似乎可以满足您的需求 在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 987246 fr_fr
123.456德鲁德
345.987246德鲁德
123456欧洲/美国3
45987.246美国
以下是内容来源的链接:
为了将格式化的数字字符串从一个区域设置转换为另一个区域设置,必须知道生成字符串的区域设置。从那里,您可以使用NumberFormat.parse将字符串转换回数字。然后使用目标区域设置创建另一个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);
}
我之前看到过这一点,但遇到的问题是,我的输入是一个字符串“123.345,67”,它不在en_US语言环境中,因此我需要一种方法,首先将该字符串转换为该特定语言环境中的有效双精度。这就是我被卡住的地方。更新的回复显示了NumberFormat如何达到这个目的。如果您不知道字符串的原始区域设置,这将不起作用。谢谢@Jeremiah,这就是我要找的。。现在我可以使用它,但我想。。。再次感谢
NumberFormat parser=NumberFormat.getNumberInstance(新语言环境(“de_de”);NumberFormat formatter=NumberFormat.getNumberInstance(新语言环境(“en_US”);Number rawNumber=parser.parse(“1.234.567,89”)代码>格式化程序。格式(rawNumber);--->给出1.234,但如果我使用Locale.Germany代替de_de,答案是1234567.89为什么ans在本地时不同。Germany与de_de LocaleScale相同。Germany指定的语言为“de”,没有国家代码。使用国家代码DE更改解释。基本上,Locale.Germany与Locale(“de”)相同,这似乎与语言和国家代码“de_de”不同。检查java.util.Locale的源代码