如何在Java中使用NumberFormat指定小数位数?

时间:2018-07-14 08:51:18

标签: java locale number-formatting string.format

让我们运行以下代码:

double number = 12345.678888;
String str1 = String.format(Locale.FRANCE, "%.10f", number);
String str2 = NumberFormat.getInstance(Locale.FRANCE).format(number);

System.out.println(str1);
System.out.println(str2);

输出将是:

  

12345,6788880000

     

12 345,679

但是那些不是我想要的。我想用NumberFormat指定小数位数,就像String.format()一样。我也尝试过DecimalFormat,但我不认为这就是答案。

如果我正在编写C#代码,可以像这样简单地完成:

string str = string.Format(new CultureInfo("fr-FR"), "{0:#,##0.0000000000}", number);

输出将是:

  

12 345,6788880000

如何用Java实现相同的目的?

1 个答案:

答案 0 :(得分:4)

请参阅文档,NumberFormat具有setMaximumFractionDigitssetMinimumFractionDigits,因此:

NumberFormat formatter = NumberFormat.getInstance(Locale.FRANCE);
formatter.setMaximumFractionDigits(10);
formatter.setMinimumFractionDigits(10);
String str2 = formatter.format(number);

那给了我

12 345,6788880000