0

私のアプリケーションは価格を扱っていますが、ここで小さな問題に直面しています。ステップで分かりやすく説明します。

以下は私の入力であり、OutPut はそうあるべきです。

入力 1.01 = 出力 1

入力 1.748 = 出力 1.75

入力 1.98 = 出力 2

入力 1.49 = 出力 1.5

入力 20.0 = 出力 2

0

次のコードを使用しましたが、達成できません

    double calc = 1.98;
            DecimalFormat df = new DecimalFormat("#.##");  
            calc = Double.valueOf(df.format(calc));
            System.out.println(String.valueOf(calc).replaceAll("([0-9])\\.0+([^0-9]|$)", "$1$2"));

::> output is 1.98 which should be 2

double calc = 20.0;
        DecimalFormat df = new DecimalFormat("#.#");  
        calc = Double.valueOf(df.format(calc));
        System.out.println(String.valueOf(calc).replaceAll("([0-9])\\.0+([^0-9]|$)", "$1$2"));

 ::> output is 20 this is correct for me.

double calc = 2.01;
        DecimalFormat df = new DecimalFormat("#.##");  
        calc = Double.valueOf(df.format(calc));
        System.out.println(String.valueOf(calc).replaceAll("([0-9])\\.0+([^0-9]|$)", "$1$2"));

::> output is 2.01  Which should be 2.

私が試した次のコード。

4

2 に答える 2

0

入力 1.01 = 出力 1

これは、小数点以下 0 桁または 1 桁を使用することを意味します。

入力 1.748 = 出力 1.75

これは、.05 または場合によっては .005 を追加してから、小数点以下 2 桁を使用することを意味します。

入力 1.98 = 出力 2

この出力は、上記のルールのいずれかで記述できます。

入力 1.49 = 出力 1.5

これは、.05 または場合によっては .005 を追加してから、小数点以下 1 桁を使用することを意味します。

入力 20.0 = 出力 20

これは、小数点以下 0 桁または 1 桁を使用することを意味します。

したがって、あなたの例は、同じ一貫したルールのすべてのインスタンスではありません。私が理解できる唯一の意味は、0.25 の粒度だけに関心があるということですが、それは私の推測です。要件を実装する前に、要件を改善する必要があります。

于 2013-11-01T06:09:39.650 に答える