是否可以使用String.format作为条件小数点?

时间:2010-01-29 19:39:46

标签: java formatting

在java中,如果确实需要,是否可以使用String.format仅显示小数?例如,如果我这样做:

String.format("%.1f", amount);

它会格式化: “1.2222” - > “1.2” “1.000” - > “1.0” 等

但在第二种情况下(1.000)我希望它只返回“1”。这可能是String.format,或者我将不得不使用DecimalFormatter?

如果我必须使用小数格式化器,我是否需要为我想要的每种格式创建一个单独的DecimalFormatter? (最多1位小数,最多2位小数等)

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)

类似