2014-09-06 130 views
0

有人可以解释setZeroDigit的用法以及它的工作原理。
例如,十进制格式设置为零数字

double d = 123456.7899; 
DecimalFormatSymbols symbols = new DecimalFormatSymbols(); 
symbols.setZeroDigit('@'); 
symbols.setMinusSign('^'); 

DecimalFormat df = new DecimalFormat("-###,###.000",symbols); 

System.out.println(df.format(d)); 

它打印^ ABC,DEF.GI @,但我不明白它如何计算输出。我阅读javadocs,但没有太多帮助。我的语言环境还有一件事是en_US。

+0

它给你什么输出各种积极和消极的数字? – usr2564301 2014-09-06 11:53:31

回答

2

如果您想以某种其他语言或区域设置打印数字,则不使用常用的符号集来表示负号,百分号等内容,您可以使用DecimalFormatSymbols。如果您使用阿拉伯语打印数字,例如使用零点的点,则可以使用setZeroDigit

在你的例子中,你已经说过“使用@为零”,这就是发生了什么。

但是,它稍微有点多。用于1,2,3等的符号被假定为紧跟在符号0后面的符号,无论使用何种字符编码。恰巧,在通常字符编码后的@后面的符号是A,B,C等。

指定的格式需要舍入到小数点后三位,所以-123456.7899变为-123456.79,然后使用符号打印@, A, B ... I代替0, 1, 2 ... 9。您还指定应使用^代替-,使用setMinusSign

+0

我有兴趣知道它是如何产生的^ ABC,DEF.GI @ – sol4me 2014-09-06 12:03:46

+0

我刚刚更新了我的问题,是的双d = 123456.7899 – sol4me 2014-09-06 12:05:49

+0

您只需要3位小数位,所以-123456.7899被四舍五入为-123456.790别名^ ABC, DEF.GI @ – ARLabs 2016-05-20 16:08:49