2013-02-28 191 views
-1

我想格式化一個數字與DecimalFormat。但我想它來格式化一個數字,就是喜歡格式化數字/字符串與小數點分隔符

input: 1234. --> should be formatted to: 1,234. 

但我得到我的規則1,234.01,234.00取決於爲十進制格式 我有什麼才能做的就是這個工作?

+0

你的規則是什麼導致錯誤的輸出? – 2013-02-28 07:02:55

+1

你可以展示你如何使用'DecimalFormat'的示例代碼嗎? – Krease 2013-02-28 07:03:28

回答

5

的方法這應該會幫助你setMinimumFractionDigitssetMaximumFractionDigits

format.setMinimumFractionDigits(0); 

在猜測,可能是你在找什麼。


爲了確保小數點分隔符始終顯示,使用:DecimalFormat.setDecimalSeparatorAlwaysShown(true)

+0

我無法用分隔符獲得輸出。像輸入:1.和輸出:1.只有1或1.0 – user2118495 2013-02-28 07:19:09

+0

第一次沒有把它作爲要求。更新了處理該問題的答案。 – femtoRgon 2013-02-28 10:13:22

1

如果不想顯示任何小數,不要格式化浮點值:)如果你使用BigIntegerint,或long,它應該是罰款:

import java.math.*; 
import java.text.*; 

public class Test { 

    private static final char p = 'p'; 

    public static void main(String[] args) { 
     NumberFormat format = new DecimalFormat(); 
     BigInteger value = BigInteger.valueOf(1234); 
     System.out.println(format.format(value)); 
     System.out.println(format.format(1234)); 
     System.out.println(format.format(1234L)); 
    } 
} 
+0

事情是,我想展示點。它就像一個輸入並添加單個值。所以,我想要點顯示。 – user2118495 2013-02-28 07:04:55

+0

@ user2118495:在它後面顯示一個沒有小數位的小數點分隔符*是非常不尋常的。我不記得在用戶界面或人類寫作中看到過這種情況。我不會驚訝地發現它不被支持。 – 2013-02-28 07:07:28

+0

如果我按幾個計算器上的點,我會得到沒有任何數字的分隔符。這是我想要的方式。就像通常的計算器輸入。 – user2118495 2013-02-28 07:11:56

2

您可以通過使用

DecimalFormat f = new DecimalFormat("#,###"); 
f.format(whatever)... 
0

嘗試這種格式的數字,無論它是一個小數與否:

DecimalFormat df = new DecimalFormat("#,###.", DecimalFormatSymbols.getInstance(Locale.ENGLISH)); 
System.out.println(df.format(1234)); 
相關問題