获得方法的答案到小数点后两位

时间:2013-03-15 16:47:24

标签: java methods

我正在使用下面的代码来获得我在两个装饰场所创建的方法的答案。但当我这样做并且complile我得到一个错误说标识符期望。出现2个错误,一个指向2,另一个指向前一个。我的问题是什么?

  import java.text.NumberFormat;

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

2 个答案:

答案 0 :(得分:0)

您所展示的内容是正确的,假设这些行不是全部(import语句必须在任何类之外)。例如,这是有效的:

import java.text.NumberFormat;

class MyClass {

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

...但是问题中显示的那些排在一起的不是。

如果不是这样,你说错误似乎集中在2上。有时当我们在SO上看到这样的问题时,这是因为某些零宽度或类似空格的特殊字符意外地在源中结束。因此,如果您删除该行并重新键入它,则可能会消除违规字符。 (实际上,经常出现的情况令人惊讶。)

答案 1 :(得分:-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