2013-08-30 110 views
3

我有一個變量類型float.I想打印它達到3精度小數包括尾隨零。格式化java中浮點數upto 3十進制精度

實施例:

2.5 >> 2.500

1.2 >> 1.200

1.3782 >> 1.378

2 >> 2.000

我想它利用

DecimalFormat _numberFormat= new DecimalFormat("#0.000"); 
Float.parseFloat(_numberFormat.format(2.5)) 

但它不是轉換2.5 >> 2.500。

難道我做錯了什麼..

請幫助..

+2

爲什麼你叫'Float.parseFloat'的輸出? – user2357112

+0

_numberFormat.format(2.5)的輸出是字符串,我需要在打印它之前在另一個浮點變量中設置這個新的格式化值..這就是爲什麼我要調用Float.parseFloat ... – Abhay

+0

'float'只是一個數字。它沒有任何關於您在顯示時使用多少數字的信息。只有字符串表示具有該信息。 – user2357112

回答

6

這裏是錯誤Float.parseFloat這是轉換回2.5

_numberFormat.format(2.5)輸出爲2.500

但是這個Float.parseFloat使它回到2.5

所以,你的代碼必須

DecimalFormat _numberFormat= new DecimalFormat("#0.000"); 
_numberFormat.format(2.5) 
+1

只是剛剛發現,鷹眼爲你+1 – MadProgrammer

0

你寫了一個小數格式化字符串然後將其解析成一個浮動。

如果他們讀2.500或2.5,雖然前者是格式化的,但他們並不關心。

由於IEEE754無法處理指定重要配置的數量,浮點數不會保留尾隨零。

+0

@MadProgrammer 固定重寫,我的壞。 – hexafraction

0

嘗試

System.out.printf("%.3f", 2.5); 

的的printf方法允許你指定你的輸入格式。在這種情況下%.3f意味着

打印以下數作爲一個浮點數用3個小數

0

嘗試格式化如下:

DecimalFormat df = new DecimalFormat(); 
df.applyPattern(".000"); 
System.out.println(df.format(f));