Java 十进制格式设置为零位

Java 十进制格式设置为零位,java,Java,有人能解释一下setZeroDigit的用途以及它是如何工作的。 例如 它打印^ABC,DEF.GI@,但我不明白它是如何计算输出的。我读过javadocs,但没什么帮助。还有一件事我的语言环境是en_US。如果你想用其他语言或语言环境打印数字,你可以使用十进制符号,而不是使用通常的符号集,比如负号、百分号等等。例如,如果您正在用阿拉伯语打印数字,您可以使用setZeroDigit,它使用点表示零 在您的示例中,您说过“使用@表示零”,这正是发生的情况 然而,还有更多。在您使用的任何字符编码中,

有人能解释一下setZeroDigit的用途以及它是如何工作的。
例如


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

如果你想用其他语言或语言环境打印数字,你可以使用
十进制符号,而不是使用通常的符号集,比如负号、百分号等等。例如,如果您正在用阿拉伯语打印数字,您可以使用
setZeroDigit
,它使用点表示零

在您的示例中,您说过“使用
@
表示零”,这正是发生的情况

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


您指定的格式需要舍入到小数点后三位,因此
-123456.7899
变为
-123456.79
,然后使用符号
@,A,B。。。我
取代了
0,1,2。。。9
。您还指定它应该使用
^
代替
-
,使用
setminusign

它为各种正数和负数提供了什么输出?我想知道它是如何生成^ABC,DEF的。GI@You要求仅输入3位十进制数字,因此-123456.7899四舍五入为-123456.790别名^ABC,DEF.GI@
double d = 123456.7899;
DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setZeroDigit('@');
symbols.setMinusSign('^');

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

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