如何在 Java 中使用 NumberFormat 指定小数位数?
How can I specify the number of decimal places with NumberFormat in Java?
让我们运行这段代码:
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 中实现相同的目标?
参考文档,NumberFormat
有 setMaximumFractionDigits
and setMinimumFractionDigits
,所以:
NumberFormat formatter = NumberFormat.getInstance(Locale.FRANCE);
formatter.setMaximumFractionDigits(10);
formatter.setMinimumFractionDigits(10);
String str2 = formatter.format(number);
这给了我
12 345,6788880000
让我们运行这段代码:
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 中实现相同的目标?
参考文档,NumberFormat
有 setMaximumFractionDigits
and setMinimumFractionDigits
,所以:
NumberFormat formatter = NumberFormat.getInstance(Locale.FRANCE);
formatter.setMaximumFractionDigits(10);
formatter.setMinimumFractionDigits(10);
String str2 = formatter.format(number);
这给了我
12 345,6788880000