2010-01-29 31 views
9

在java中,是否有可能使用String.format只顯示小數點,如果實際上有需要?例如,如果我這樣做:是否可以使用String.format作爲條件小數點?

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

它將格式化: 「1.2222」 - > 「1.2」 「1.000」 - > 「1.0」 等

但在第二種情況下( 1.000)我希望它只返回「1」。這可能與String.format,或將不得不使用DecimalFormatter?

如果我必須使用一個十進制格式化程序,我是否需要爲每種類型的格式創建一個單獨的DecimalFormatter? (最多1個小數位,最多2位小數,等)

回答

10

不,你必須使用DecimalFormat

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

把儘可能多的# S作爲你想; DecimalFormat將只打印儘可能多的數字,它認爲是有意義的,最多爲# s。

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 

對我所需要的很有幫助。 (fmt,x)類似於System.out.print(String.format(fmt,x)

(僅供參考,如有更改,恕不另行通知)
相關問題