Is it possible to use String.format for a conditional decimal point?

formatting, java

Solution

No, you have to use DecimalFormat:

final DecimalFormat f = new DecimalFormat("0.##");
System.out.println(f.format(1.3));
System.out.println(f.format(1.0));

Put as many `#`s as you'd like; the DecimalFormat will only print as many digits as it thinks are significant, up to the number of `#`s.

Problem

In java, is it possible to use String.format to only show a decimal if there is actually a need? For example, if I do this: ``` String.format("%.1f", amount); ``` it will format: "1.2222" -> "1.2" "1.000" -> "1.0" etc, but in the second case (1.000) I want it to return just "1". Is this possible with String.format, or am going to have to use a DecimalFormatter? If I have to use a decimal formatter, will I need to make a separate DecimalFormatter for each type of format I want? (up to 1 decimal place, up to 2 decimal places, etc)

Original source