有没有办法在结果返回零时截断负号;使用十进制格式时?
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."
or "-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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)