我想用+/-符号显示double
号码,我正在使用此十进制格式
double d = 0;
DecimalFormat nf = new DecimalFormat("+#0.0;-#0.0");
System.out.println(nf.format(d));
d = -1;
System.out.println(nf.format(d));
d = 1;
System.out.println(nf.format(d));
我会像这样输出
+0.0
-1.0
+1.0
但我希望0.0
没有+
符号
0.0
-1.0
+1.0
谢谢
答案 0 :(得分:2)
也许更好更简单的代码:
String style = d > 0 ? "+%.2f" : "% .2f";
System.out.println(String.format(style, d));
答案 1 :(得分:1)
与this一样,我不完全确定有一种方法可以用仅十进制格式来解决这个问题,但是对该答案中给出的正则表达式稍作修改(同样,信用:@Bohemian)似乎解决了这个问题。
System.out.println(nf.format(d).replaceAll("^[-+](?=0(.0*)?$)", ""));
这只是寻找数字0格式的数字(即0后跟小数点后的一些零),删除它前面的符号。
答案 2 :(得分:0)
如果您在此论坛上搜索,则您的问题已经存在答案。答案可在https://stackoverflow.com/a/11929642/4284989
获得仅使用格式符号无法满足您的要求。在应用格式后,您必须用“”(空)替换符号符号。
为清楚起见,以下代码段会为您提供所需的答案。
public class FormatTester {
public static void main(String[] args){
DecimalFormat nf = new DecimalFormat("#,##0.0");
String formattedValue = nf.format(Double.parseDouble(args[0]));
formattedValue = formattedValue.replaceAll( "^-(?=0(.0*)?$)", "");
System.out.println(">>>> "+formattedValue+" <<<<");
}
}