java - 小数格式设置零位

标签 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。

最佳答案

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

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

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

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

关于java - 小数格式设置零位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25699904/

相关文章:

java - 在 Java lambda 中使用两个流来计算协方差

java - 需要使用brew : Java 1. 7在Mac上安装Zeppelin

java - ORDER BY 使用 Criteria API

java - 为什么 PDFBox "moveTextPositionByAmount(X,Y)"会导致指数行为?

java - 窗口缩放

java - 如何在 BroadcastReceiver 中访问 MainActivity 的对象或方法?

java - 跨多个 Web 服务的交易

java - 如何使用 java 中的值创建类似类型驱动选择的内容(例如图片)

java - 在 Android 中匹配正则表达式模式时出现问题

java - 如何设置CCSprite的框架