Format float to show decimal places if is not zero

2019-05-12 18:22发布

问题:

This question already has an answer here:

  • How to nicely format floating numbers to String without unnecessary decimal 0? 22 answers

I need to to show decimal places of a float value only when it is different from zeros.

  1. 5.0 should be shown as 5.
  2. 7.3 should be shown as 7.3.
  3. 9.000003 should be shown as 9.000003.

How to format in this way using regex or DecimalFormat?

回答1:

To display decimals the way you desire, use the following snippet:

// This is to show symbol . instead of ,
DecimalFormatSymbols otherSymbols = new DecimalFormatSymbols(Locale.US);
// Define the maximum number of decimals (number of symbols #)
DecimalFormat df = new DecimalFormat("#.##########", otherSymbols);

// type: double
System.out.println(df.format(5.0)); // writes 5
System.out.println(df.format(7.3)); // writes 7.3
System.out.println(df.format(9.000003)); // writes 9.000003

// type: float
System.out.println(df.format(9.000003f)); // writes 9.000002861