BigDecimal除法,並保留小數後兩位

2021-09-27 13:45:03 字數 886 閱讀 9821

丟擲問題

overtimehour = new bigdecimal(overtimeminute).divide(new bigdecimal(60), 2, bigdecimal.round_floor).doublevalue();

此處涉及2點:1、bigdecimal除法 2、bigdecimal四捨五入

內容

bigdecimal.setscale()方法用於格式化小數點

setscale(1)表示保留一位小數,預設用四捨五入方式

setscale(1,bigdecimal.round_down)直接刪除多餘的小數字,如2.35會變成2.3

setscale(1,bigdecimal.round_up)進製處理,2.35變成2.4

setscale(1,bigdecimal.round_half_up)四捨五入,2.35變成2.4

setscaler(1,bigdecimal.round_half_down)四捨五入,2.35變成2.3,如果是5則向下舍

setscaler(1,bigdecimal.round_ceiling)接近正無窮大的捨入

setscaler(1,bigdecimal.round_floor)接近負無窮大的捨入,數字》0和round_up作用一樣,數字<0和round_down作用一樣

setscaler(1,bigdecimal.round_half_even)向最接近的數字捨入,如果與兩個相鄰數字的距離相等,則向相鄰的偶數捨入。

結尾補充

BigDecimal保留小數和除法報錯問題

public static void main string args setscale 方法第乙個引數保留小數點位數,第二個是規則見下方 除不盡報錯解決 將結果擷取,就是一定要指定保留小數個數 system.out.println a.divide b,0 bigdecimal.round dow...

BigDecimal除法問題

bigdecimal做除法時,盡量使用divide bigdecimal divisor,intscale,introundingmode 這個方法 divisor 被除數 scale保留小數字數 roundingmode保留小數時採用的方法,一般使用bigdecimal.round up 四捨五入...

BigDecimal除法運算報錯

今天在運用bigdecimal做除法運算的時候,錯誤如下 non terminating decimal expansion no exact representable decimal result 不是很明白為什麼會這個樣子,度娘告訴我是因為 bigdecimal 做除法運算,如果除的結果為無限...