我的要求是,如果最后一个变量值小于1,例如0.0045
然后我需要在小数点后打印4位数,以便结果看起来像0.0045
或者如果最后一个变量值大于1,例如444.8183
然后我需要在小数点后只打印2位数,以便结果看起来像444.82
我已经编写了该程序,它的工作正常,但我喜欢使用三元运算符
public class Test {
private static NumberUtil numberUtil = NumberUtil.getInstance();
public static void main(String args[]) {
float last = (float) 444.8183;
String result = "";
if (last > 1) {
result = numberUtil.formatNumber(last, 2);
} else {
result = numberUtil.formatNumber(last, 4);
}
System.out.println(result);
}
}
import java.text.DecimalFormat;
public class NumberUtil {
private static NumberUtil _instance = new NumberUtil();
public static NumberUtil getInstance() {
return _instance;
}
public String formatNumber(double d, int decPts) {
if (2 == decPts)
return new DecimalFormat("#,###,###,##0.00").format(d);
else if (0 == decPts)
return new DecimalFormat("#,###,###,##0").format(d);
else if (3 == decPts)
return new DecimalFormat("#,###,###,##0.000").format(d);
else if (4 == decPts)
return new DecimalFormat("0.0000").format(d);
return String.valueOf(d);
}
public double formatDoubleNumber(double d){
double newD = Math.round(d*100.0)/100.0;
return newD;
}
}
答案 0 :(得分:8)
怎么样
sigFigs = (last > 1)? 2 : 4;
result = numberUtil.formatNumber(last, sigFigs);
将此分割成这样的优点是代码变为“自我记录”。下周你仍然会记得为什么你做了你做的事。
答案 1 :(得分:3)
以下是:
result = (last > 1)
? numberUtil.formatNumber(last, 2)
: numberUtil.formatNumber(last, 4);
顺便说一句,它实际上被称为“条件运算符”。它碰巧是“一个”三元运算符(三元意味着需要三个操作数)。
答案 2 :(得分:3)
为了使其更具可读性,请将三元放入电话:
String result = numberUtil.formatNumber(last, last > 1 ? 2 : 4);
重要的是你要将三元的影响缩小到最小范围,与“最小化范围”一致。
请注意,不需要在测试周围使用括号(代码越少越好!)。
答案 3 :(得分:0)
我不喜欢三元运算符但是你去了
result = (last > 1)? numberUtil.formatNumber(last, 2) : numberUtil.formatNumber(last, 4);
答案 4 :(得分:0)
result = numberUtil.formatNumber(last, (last > 1) ? 2 : 4);