2011-03-30 73 views
2

我想使用printf格式化一個數字,但找不到正確的掩碼。我應該使用什麼格式來顯示2位小數或無?

例如:

class F { 
    public static void main(String ... args) { 
     p(2.123123); 
     p(2.0); 
    } 
    public static void p(double d) { 
     System.out.printf("%.2f",d); 
     System.out.println(); 
    } 

} 

會打印:

2.12 
2.00 

我應該用什麼面膜,使其打印

2.12 
2 

或者如果可能的話:

2.12 
    2 

背景:

我將用它來顯示文件大小。目前看起來是這樣的:

23/03/11 12:15 0.00 TEST/ 
30/03/11 10:35 2.57 kb picture-3651.jpg 
12/04/11 14:49 7.31 mb reference.pdf 

其中,不用說看起來很可怕,當該文件是一個目錄,它的大小爲0字節。

回答

4

使用DecimalFormat做的:

DecimalFormat df = new DecimalFormat("#.##"); 
+1

所以,應該是這樣的:'的printf(「%s%s%S, df.format(humanSize(file.length()),humanDesc(file.length()),file.getName())'?...我已經感覺很髒,不得不調用一個額外的函數來調整大小,描述已經,但我想沒有其他的選擇 – OscarRyz 2011-03-30 21:57:18

+0

工作,謝謝 – OscarRyz 2011-03-30 22:02:26

+0

容易的問題很容易 – mre 2011-03-30 22:31:27

0

您可以嘗試使用%.3g進行試驗,它應該粗略地查找您要查找的內容,但在掩碼中包含.左側的數字。

如果這不適用於您,也可以只搜索.00並使用String.replace將其去掉。經過一番實驗

編輯:

String.format("%.2f\n", value).replace(".00", "")應該做你在找什麼。

+0

看起來是一樣的,我... TEST文件夾的大小是0.00 :( – OscarRyz 2011-03-30 21:37:34

相關問題