Java:如何使用三元运算符来实现此目的

Paw*_*wan 0 java

我的要求是,如果最后一个变量 值小于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;
    }
}
Run Code Online (Sandbox Code Playgroud)

Flo*_*ris 8

怎么样

sigFigs = (last > 1)? 2 : 4;
result = numberUtil.formatNumber(last, sigFigs);
Run Code Online (Sandbox Code Playgroud)

像这样拆分它的优点是代码变成了"自我记录".下周你仍然会记得为什么你做了你做的事.