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

Jen*_*nix 3 java string.format locale number-formatting

让我们运行这段代码:

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);
Run Code Online (Sandbox Code Playgroud)

输出将是:

12345,6788880000

12 345,679

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

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

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

输出将是:

12 345,6788880000

我怎样才能在 Java 中实现同样的事情?

T.J*_*der 6

参考文档,NumberFormatsetMaximumFractionDigitssetMinimumFractionDigits,所以:

NumberFormat formatter = NumberFormat.getInstance(Locale.FRANCE);
formatter.setMaximumFractionDigits(10);
formatter.setMinimumFractionDigits(10);
String str2 = formatter.format(number);
Run Code Online (Sandbox Code Playgroud)

这给了我

12 345,6788880000

  • 正如预期的那样!太感谢了!:) (2认同)