0

私の要件は、最後の変数 値が 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;
    }
}
4

5 に答える 5

8

どうですか

sigFigs = (last > 1)? 2 : 4;
result = numberUtil.formatNumber(last, sigFigs);

このように分割する利点は、コードが「自己文書化」されることです。来週、あなたは自分がしたことをした理由をまだ覚えています。

于 2013-06-10T03:51:19.497 に答える
2

方法は次のとおりです。

result = (last > 1) 
    ? numberUtil.formatNumber(last, 2) 
    : numberUtil.formatNumber(last, 4);

ちなみに、これは実際には「条件演算子」と呼ばれています。これはたまたま「a」三項演算子です (三項とは、3 つのオペランドを取ることを意味します)。

于 2013-06-10T03:50:10.517 に答える
0

私は三項演算子が好きではありませんが、どうぞ

result =  (last > 1)? numberUtil.formatNumber(last, 2) : numberUtil.formatNumber(last, 4);
于 2013-06-10T03:50:46.650 に答える