2015-05-11 18 views
5

Ví dụ:Làm thế nào để vòng một Value BigDecimal để hundreths gần nhất

public class Round { 

    private static final BigDecimal TWELVE = new BigDecimal("12"); 
    public static void main(String[] args) { 

     BigDecimal annualAmt = new BigDecimal("55867.59"); 
     BigDecimal monthlyAmt = null; 

     monthlyAmt = annualAmt.divide(TWELVE, 0, RoundingMode.HALF_UP); 
     System.out.println(monthlyAmt); 
    } 
} 

Kết quả chương trình trên là 4656. Tôi muốn làm tròn này đến phần trăm gần như 4700.

Tương tự 4235 -> 4200

Trả lời

9

Để làm tròn một số BigDecimal nhất định, hãy sử dụng monthlyAmt = monthlyAmt.setScale(-2, RoundingMode.HALF_EVEN) (hoặc thay thế chế độ làm tròn thích hợp).

+0

tôi sẽ thêm một cuộc gọi cho 'toPlainString()', khác đầu ra là '4.7E + 3'. – rgettman

+0

có nó cung cấp giá trị số mũ.Call toPlainString() đang đưa ra lỗi không khớp loại. Tôi muốn trả lại một số tiền lớn ở đây. monthlyAmt phải là BigDecimal. – CoolSpring

+0

Nếu 'monthlyAmt' phải là' BigDecimal', thì câu trả lời tôi đưa cho bạn là chính xác và bạn không nên gọi bất kỳ phương thức nào khác. –

-1

Bạn có thể thử sử dụng công thức làm tròn số này để tính số nguyên:

res = ((number + factor - 1)/factor) * factor; 
Các vấn đề liên quan