2012-10-03 15 views
0

我現在有這將帶4位小數的輸入和圓形它的功能,它看起來像這樣:方法四捨五入到一定量的小數位,根據可變

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

真的簡單的功能,但我想我可以改變它,以允許第二個變量被傳遞,說明有多少個地方可以四捨五入,但是我不確定如何去在數學語句中打印正確數量的0 (每個0代表將要打印的一位小數位)。任何關於如何完成的想法?這只是我的java類的一些額外的功勞,我還在學習,所以我很抱歉,如果有一個簡單的解決方案,我忽略了。

+0

使用BigDecimal的,而不是..請訪問http:// WWW。 opentaps.org/docs/index.php/How_to_Use_Java_BigDecimal:_A_Tutorial對於它的一個很好的教程..這是完全根據您的要求.. –

+0

十進制對數計數的數字減1(可以是小數)。 –

+3

對不起,請使用'Math.round(n * Math.pow(10,n))/ Math.pow(10,n)'其中'n'是您的號碼。 –

回答

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

完美,謝謝! – Kynian

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