实现这个功能的第一种方法是:
StringBuilder sb = new StringBuilder();
double d = 3.5;
if (d % 1 == 0) sb.append((int) d);
else sb.append(d);
System.out.println(sb.toString());
当 d
为 3.0
时,这仍然有效,将附加 3;如果 d
为 3.5
,则会附加 3.5。
现在我想用三元运算符简洁地实现这个:
StringBuilder sb = new StringBuilder();
double d = 3.5;
sb.append(d % 1 == 0 ? (int) d : d);
System.out.println(sb.toString());
现在我有一个问题,每次如果double是3.0
或3.5
,它都会被添加为双精度浮点数!只有当我在true
和false
上进行理论转换时才有效...但是每次都是这样,这不是我想要的。问题出在哪里?为什么三元运算符不起作用?
DecimalFormat("0.#")
来消除尾随的零,而不是强制转换为int
。 - Mick Mnemonic