十进制格式设置为零

时间:2014-09-06 11:46:32

标签: java

有人可以解释一下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。

1 个答案:

答案 0 :(得分:2)

如果要使用其他语言或区域设置打印数字,则使用DecimalFormatSymbols,这些数字不会使用通常的符号集,例如负号,百分号等。如果您使用阿拉伯语打印数字,可以使用setZeroDigit,例如,使用点数为零。

在您的示例中,您已经说过“使用@为零”,而这正是发生的事情。

然而,还有更多。用于1,2,3等的符号被假定为紧跟在符号0之后的符号,无论您使用何种字符编码。恰好在通常的字符编码中跟随@的符号是A,B,C等。

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