Java 如何为欧洲语言设置数字格式

Java 如何为欧洲语言设置数字格式,java,android,numberformatter,Java,Android,Numberformatter,我有一张双人床: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 forma

我有一张双人床: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);
输出:5096,54当我期待5.096,54时
知道它为什么会失败吗?

它对我来说适用于西班牙语语言环境:

    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

法语区域似乎使用了类似空格的分隔符,您可以检查以下问题:

他们通过以下解决方法解决了这一问题:

DecimalFormat df = (DecimalFormat) NumberFormat.getNumberInstance(Locale.FRANCE);
DecimalFormatSymbols symbols = df.getDecimalFormatSymbols();
char thousandSep = symbols.getGroupingSeparator();

input =input.replace(thousandSep, '.'); 

您可以使用相同的解决方法,也可以使用西班牙语区域设置(或与您的需要相匹配的任何其他语言)

您可以执行以下操作:

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);

大多数欧洲格式将空格作为千位分隔符,将coma作为十进制分隔符。。。但是你可以试试意大利语或挪威语的语言环境谢谢大家的帮助,混淆的原因是语言环境“fr”是法语(输出例如:5096,54),但在比利时,法语应该是5.096,54。因此,将我的语言环境设置为'Locale l=new Locale(“fr”,“BE”);'你解决了我的问题吗