Java中为零时的负号

当结果返回零时,是否有任何方法可以截断负号;使用十进制格式时?

DecimalFormat df = new DecimalFormat("#,##0.0");

df.setRoundingMode(RoundingMode.HALF_UP);

formattedValue = df.format("-0.023");

上面的代码返回-0.0。有什么办法可以使它只返回0.0?但是,当结果为负数时,我想保留负号。

回答:

我不认为仅用一种方法就可以做到这一点DecimalFormat,但是这种单线解决了这个问题:

formattedValue = formattedValue.replaceAll( "^-(?=0(\\.0*)?$)", "");

它消除(其替换""减号),如果它后面跟着0-n个字符的"0.00000...",所以这将任何结果,如类似的工作"-0""-0.""-0.000000000"

这是一些测试代码:

public static void main(String[] args) {

System.out.println(format(-0.023));

System.out.println(format(12.123));

System.out.println(format(-12.345));

System.out.println(format(-0.123));

System.out.println(format(-1.777));

}

public static String format(double number) {

DecimalFormat df = new DecimalFormat("#,##0.0");

df.setRoundingMode(RoundingMode.HALF_UP);

String formattedValue = df.format(number);

formattedValue = formattedValue.replaceAll("^-(?=0(\\.0*)?$)", "");

return formattedValue;

}

输出(预期):

0.0

12.1

-12.3

-0.1

-1.8

以上是 Java中为零时的负号 的全部内容, 来源链接: utcz.com/qa/406352.html

回到顶部