2

我想使用数字格式在数字为正数或负数时添加不同的文本

前任 :

-3.5 =>(下降)3.5

+3.5 =>(向上)3.5

我在 DecimalFormatSymbols 中找到了东西,但只能更改减号并且只能更改单个字符

还有其他使用数字格式化器的简单方法吗?

DecimalFormatSymbols unusualSymbols = new DecimalFormatSymbols(currentLocale);
unusualSymbols.setDecimalSeparator('|');
unusualSymbols.setGroupingSeparator('^');
unusualSymbols.setMinusSign();
String strange = "#,##0.###";
DecimalFormat weirdFormatter =
        new DecimalFormat(strange, unusualSymbols);
weirdFormatter.setGroupingSize(4);

String bizarre = weirdFormatter.format(12345.678);
System.out.println(bizarre);
4

2 回答 2

3

设置 的正前缀和负前缀DecimalFormat

DecimalFormat formatter = new DecimalFormat();
formatter.setPositivePrefix("(up) ");
formatter.setNegativePrefix("(down) ");
System.out.println(formatter.format(-3.5));
System.out.println(formatter.format(3.5));

输出:

(down) 3.5
(up) 3.5
于 2019-08-16T16:22:11.163 回答
3

您可以在格式字符串中执行此操作DecimalFormat

(up) #,##0.###;(down) #,##0.###

链接的文档包含格式字符串的完整语法定义,开头为:

Pattern:
         PositivePattern
         PositivePattern ; NegativePattern

这表示由分号 ( ;) 分隔的可选第二个格式字符串将用于负值。

进一步阅读:

PositivePattern:
        Prefix_opt Number Suffix_opt
NegativePattern:
        Prefix_opt Number Suffix_opt
Prefix:
        any Unicode characters except \uFFFE, \uFFFF, and special characters
Suffix:
        any Unicode characters except \uFFFE, \uFFFF, and special characters

每个模式(正数和负数)都由一个数字格式字符串 ( Number) 和一个可选的前缀和后缀字符串组成。这些附加部分可以是您喜欢的任何字符串(包括(up)(down))。

于 2019-08-16T16:26:04.300 回答