根据变量舍入到一定数量的小数位的方法

时间:2012-10-03 18:16:19

标签: java math methods

我目前有一个函数,它将输入并将其四舍五入到小数位,它看起来像这样:

    public static double table_round(double n) {
    return (double) Math.round(n * 10000) / 10000;
}

真的非常简单的功能,但是我想我可以改变它以允许传递第二个变量,说明要舍入的位数,但是我不确定如何打印正确的0的数量在那里的数学语句中(每个0表示将打印一个小数位)。关于如何实现这一点的任何想法?这只是我的java课程的一些额外功劳,我还在学习所以如果有一个简单的解决方案,我很抱歉。

2 个答案:

答案 0 :(得分:3)

public static double table_round(double n, int digits) {
    return BigDecimal.valueOf(n).setScale(digits,BigDecimal.ROUND_HALF_UP).doubleValue();
}

答案 1 :(得分:0)

您可以使用BigDecimal及其setScale()方法修正小数后的数字

public static double table_round(double n) {

    // No of digits you want after decimal.
    int digitsAfterDecimal = 5;

    BigDecimal bigDecimal = BigDecimal.valueOf(n);

    // BigDecimal.ROUND_FLOOR is Rounding Mode..denote how your value is rounded off
    // Other ways are:- "ROUND_CEILING", "ROUND_DOWN", etc.. 
    bigDecimal = bigDecimal.setScale(digitsAfterDecimal, BigDecimal.ROUND_FLOOR);

    return Double.valueOf(bigDecimal.toString());
}

有关详细信息,请参阅http://www.opentaps.org/docs/index.php/How_to_Use_Java_BigDecimal:_A_Tutorial