1

以下のコードを使用して、2 つの decomal の場所に作成したメソッドの答えを取得しています。しかし、これを実行してコンパイルすると、識別子が必要であるというエラーが表示されます。2 つのエラーは、1 つが 2 を指し、もう 1 つが直前に発生します。私の問題は何ですか?

  import java.text.NumberFormat;

  NumberFormat nf = NumberFormat.getNumberInstance();
 nf.setMaximumFractionDigits(2);
4

2 に答える 2

0

行がすべて一緒ではないことを前提として、あなたが示したことは正しいです(importステートメントはクラスの外にある必要があります)。たとえば、これは有効です。

import java.text.NumberFormat;

class MyClass {

    void someMethod() {
        NumberFormat nf = NumberFormat.getNumberInstance();
        nf.setMaximumFractionDigits(2);
        // ...
    }
}

...しかし、あなたの質問に示されているように、これらの行は一緒ではありません。

そうでない場合は、エラーが に集中しているようだとおっしゃいました2。SO でこのような質問が表示されることがありますが、これは幅がゼロの特殊文字やスペースのような特殊文字が誤ってソースに含まれていることが原因です。したがって、その行を削除して再入力すると、問題のある文字が消去される可能性があります。(実際、それがどれほど頻繁に発生するかは驚くべきことです。)

于 2013-03-15T16:50:28.013 に答える
-1

汎用関数は次のように記述できます。

public static double round(double inputNumber, int fractionDigits, int roundingMode) {
        BigDecimal bigDecimal = new BigDecimal(inputNumber);
        BigDecimal rounded = bigDecimal.setScale(fractionDigits, roundingMode);
        return rounded.doubleValue();
}

以下のサンプルテスト結果をご覧ください。

import java.math.BigDecimal;

public class RoundHelper {


    public static void main(String[] args) {
        System.out.println(RoundHelper.round(123.98980, 2, BigDecimal.ROUND_HALF_UP));
        System.out.println(RoundHelper.round(123.98000, 2, BigDecimal.ROUND_HALF_UP));
        System.out.println(RoundHelper.round(123.98000, 2, BigDecimal.ROUND_HALF_UP));
        System.out.println(RoundHelper.round(123.55087, 2, BigDecimal.ROUND_HALF_UP));
        System.out.println(RoundHelper.round(123.14000, 2, BigDecimal.ROUND_HALF_UP));
    }

    public static double round(double inputNumber, int fractionDigits, int roundingMode) {
        BigDecimal bigDecimal = new BigDecimal(inputNumber);
        BigDecimal rounded = bigDecimal.setScale(fractionDigits, roundingMode);
        return rounded.doubleValue();
    }

}

出力:

123.99
123.98
123.98
123.55
123.14
于 2013-03-15T17:07:21.027 に答える