在java中,如果确实需要,是否可以使用String.format仅显示小数?例如,如果我这样做:
String.format("%.1f", amount);
它会格式化: “1.2222” - > “1.2” “1.000” - > “1.0” 等
但在第二种情况下(1.000)我希望它只返回“1”。这可能是String.format,或者我将不得不使用DecimalFormatter?
如果我必须使用小数格式化器,我是否需要为我想要的每种格式创建一个单独的DecimalFormatter? (最多1位小数,最多2位小数等)
答案 0 :(得分:13)
不,你必须使用DecimalFormat:
final DecimalFormat f = new DecimalFormat("0.##");
System.out.println(f.format(1.3));
System.out.println(f.format(1.0));
根据需要添加尽可能多的#
个; DecimalFormat只打印它认为重要的数字,最多为#
个。
答案 1 :(得分:3)
这可能会让你得到你想要的东西;我不确定您的要求的要求或背景。
float f;
f = 1f
System.out.printf(f==Math.round(f) ? "%d\n" : "%s\n", f); //1
f = 1.555f
System.out.printf(f==Math.round(f) ? "%d\n" : "%s\n", f); //1.555
为我需要的工作做得很好。
仅供参考,System.out.printf(fmt,x)与System.out.print(String.format(fmt,x)
类似