Java: use decimalformat to format doubles and integers, but keep integers without decimal separator
•
Java
I tried to format some numbers in a java program Numbers will be double and integer When dealing with double precision, I only want to keep two decimal points, but when dealing with integers, I want the program to remain unchanged To put it another way:
Doubles - input
14.0184849945
Doubles - output
14.01
Integer – input
13
Integer - output
13 (not 13.00)
Is there any way to implement it in the same decimalformat instance? My code is as follows, so far:
DecimalFormat df = new DecimalFormat("#,###,##0.00"); DecimalFormatSymbols otherSymbols = new DecimalFormatSymbols(Locale.ENGLISH); otherSymbols.setDecimalSeparator('.'); otherSymbols.setGroupingSeparator(','); df.setDecimalFormatSymbols(otherSymbols);
Solution
You can set minimumfractiondigits to 0 like this:
public class Test { public static void main(String[] args) { System.out.println(format(14.0184849945)); // prints '14.01' System.out.println(format(13)); // prints '13' System.out.println(format(3.5)); // prints '3.5' System.out.println(format(3.138136)); // prints '3.13' } public static String format(Number n) { NumberFormat format = DecimalFormat.getInstance(); format.setRoundingMode(RoundingMode.FLOOR); format.setMinimumFractionDigits(0); format.setMaximumFractionDigits(2); return format.format(n); } }
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码