0

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

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

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

4

2 回答 2

3
public static double table_round(double n, int digits) {
    return BigDecimal.valueOf(n).setScale(digits,BigDecimal.ROUND_HALF_UP).doubleValue();
}
于 2012-10-03T18:39:34.847 回答
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

于 2012-10-03T18:27:12.973 回答