有人可以解释一下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 :(得分:2)
如果要使用其他语言或区域设置打印数字,则使用DecimalFormatSymbols
,这些数字不会使用通常的符号集,例如负号,百分号等。如果您使用阿拉伯语打印数字,可以使用setZeroDigit
,例如,使用点数为零。
在您的示例中,您已经说过“使用@
为零”,而这正是发生的事情。
然而,还有更多。用于1,2,3等的符号被假定为紧跟在符号0之后的符号,无论您使用何种字符编码。恰好在通常的字符编码中跟随@的符号是A,B,C等。
您指定的格式需要四舍五入到小数点后三位,因此-123456.7899
变为-123456.79
,然后使用符号@, A, B ... I
代替0, 1, 2 ... 9
打印。^
。您还指定使用-
代替setMinusSign
使用{{1}}。