如何格式化欧洲语言的数字
Posted
技术标签:
【中文标题】如何格式化欧洲语言的数字【英文标题】:How to format a number for european language 【发布时间】:2016-06-10 10:09:37 【问题描述】:我有一个双倍:5096,54 我需要将其格式化为:5.096,54(欧洲货币格式) 我正在尝试使用此代码,但没有成功。
Locale l = Locale.getDefault(); // ("fr" in my case)
// Get the formatter for the specific locale
NumberFormat formatter = NumberFormat.getNumberInstance(l);
// Always 2 decimals
formatter.setMinimumFractionDigits(2);
formatter.setMaximumFractionDigits(2);
// Format
return formatter.format(d);
输出:5 096,54 当我期待 5.096,54 知道为什么会失败吗?
【问题讨论】:
大多数欧洲格式是空格作为千位分隔符和逗号作为小数分隔符...但您可以尝试意大利语或挪威语语言环境 ideone.com/IHc6IDdocs.oracle.com/cd/E19455-01/806-0169/overview-9/index.html 感谢大家的帮助,混淆来自于语言环境“fr”是法语(输出例如:5 096,54)但在比利时,法语应该是5.096,54。因此,将我的语言环境设置为 'Locale l = new Locale("fr", "BE");'确实解决了我的问题 【参考方案1】:它适用于西班牙语言环境:
Double d = 5096.54;
Locale l = Locale.getDefault();
NumberFormat formatter = NumberFormat.getNumberInstance(l);
formatter.setMinimumFractionDigits(2);
formatter.setMaximumFractionDigits(2);
String d1 = formatter.format(d);
结果:5.096,54
似乎法语语言环境使用看起来像空格的东西作为千位分隔符,你可以检查这个问题:
Java FRANCE/FRENCH Locale thousands separator looks like space but not actually
他们用这个解决方法修复它:
DecimalFormat df = (DecimalFormat) NumberFormat.getNumberInstance(Locale.FRANCE);
DecimalFormatSymbols symbols = df.getDecimalFormatSymbols();
char thousandSep = symbols.getGroupingSeparator();
input =input.replace(thousandSep, '.');
您可以使用相同的解决方法或使用西班牙语语言环境(或任何其他符合您需要的方法)
【讨论】:
【参考方案2】:您可以执行以下操作:
Locale l = Locale.getDefault();
DecimalFormat formatter = (DecimalFormat) NumberFormat.getInstance(l);
DecimalFormatSymbols symbols = formatter.getDecimalFormatSymbols();
symbols.setGroupingSeparator('.'); // setting the thousand separator
// symbols.setDecimalSeparator(','); optionally setting the decimal separator
formatter.setDecimalFormatSymbols(symbols);
formatter.setMinimumFractionDigits(2);
formatter.setMaximumFractionDigits(2);
String formattedString = formatter.format(yourDouble);
【讨论】:
以上是关于如何格式化欧洲语言的数字的主要内容,如果未能解决你的问题,请参考以下文章
如何将欧洲格式的字符串日期转换为有效的 mysql 日期格式?
如何在 Java 中将语言环境格式的数字转换为 BigInteger?