2013-02-28 192 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)); 
相关问题