3

Let's run this code :

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

The outputs will be:

12345,6788880000

12 345,679

But those aren't what I want. I want to specify the number of decimal places with NumberFormat just like String.format() can do. I also tried DecimalFormat as well but I don't think that's the answer.

If I was writing C# code, it could be done simply like this :

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

And the output would be:

12 345,6788880000

How can I achieve the same thing in Java?

Community
  • 1
  • 1
Jenix
  • 2,996
  • 2
  • 29
  • 58

1 Answers1

6

Referring to the documentation, NumberFormat has setMaximumFractionDigits and setMinimumFractionDigits, so:

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

That gives me

12 345,6788880000
T.J. Crowder
  • 1,031,962
  • 187
  • 1,923
  • 1,875