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

2022-09-04 20:01:57

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

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

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

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

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


答案 1

不,您必须使用十进制格式

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

放尽可能多的,只要你想;DecimalFormat将只打印它认为重要的数字数,直到s的数目。##


答案 2

这可能会让你得到你想要的东西;我不确定您的请求的要求或上下文。

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)


推荐