關於四捨五入:
round_half_up: 遇到.5的情況時往上近似,例: 1.5 ->;2
round_half_down : 遇到.5的情況時往下近似,例: 1.5 ->;1
bigdecimal a = new bigdecimal(1.5); system.out.println("down="+a.setscale(0,bigdecimal.round_half_down)+"\tup="+a.setscale
(0,bigdecimal.round_half_up));
結果:down=1 up=2
關於bigdecimal的截斷:
bigdecimal aa = new bigdecimal(99.999);
aa=aa.setscale(2,bigdecimal.round_down);
結果:aa=99.99,即在小數點後兩位處截斷。
其他引數說明
round_ceiling
如果bigdecimal是正的,則做round_up操作;
如果為負,則做round_down操作。
round_floor
如果bigdecimal為正,則作round_up;
如果為負,則作round_down。
round_half_down
若捨棄部分》 0.5,則作round_up;
否則,作round_down。
round_half_even
如果捨棄部分左邊的數字為奇數,則作round_half_up;
如果它為偶數,則作round_half_down。
round_half_up
若捨棄部分》=.5,則作round_up;否則作round_down。
round_unnecessary
該「偽捨入模式」實際是指明所要求的操作必須是精確的,
因此不需要捨入操作。
round_up
總是在非0捨棄小數(即截斷)之前增加數字。
(其實就是只要不是0,就進一位的意思)
round_down
從不在捨棄(即截斷)的小數之前增加數字(其實就是截斷的意思)。
bigdecimal.round_up 最後一位如果大於0,則向前進一位,正負數都如此。1.1-> 2 1.5-> 2 1.8-> 2 -1.1-> -2 -1.5-> -2 -1.8-> -2
bigdecimal.round_down 最後一位不管是什麼都會被捨棄。向0的方向移動 1.1-> 1 1.5-> 1 1.8-> 1 -1.1-> -1 -1.5-> -1 -1.8> -1
bigdecimal.round_ceiling 如果是正數,按round_up處理,如果是負數,按照round_down處理。例如7.1->8; -7.1->-7;所以這種近似的結果都會》=實際值。
bigdecimal.round_floor 跟bigdecimal_round_ceiling相反。例如7.1->7;-7.1->-8。這種處理的結果<=實際值。
bigdecimal.round_half_down 如果最後一位<=5則捨棄,如果》5, 向前進一位。如7.5->7;7.6->8;-7.5->-7
bigdecimal.round_half_up 最常見的四捨五入。
如果最後一位<5則捨棄,如果》=5, 向前進一位。反之捨棄。如7.5->8;7.4->7;-7.5->-8
bigdecimal.round_half_even 如果倒數第二位是奇數,按照bigdecimal.round_half_up處理,如果是偶數,按照bigdecimal.round_half_down來處理。如7.5->8;8.5->8;7.4->7;-7.5->-8
具體精確到幾位因該採用
商=被除數.devide(除數,保留小數字數,精確方法)
精確方法:roundmode是指舍位時候的模式,傳引數的時候用bigdecimal.round_***x_***
關於BigDecimal資料的四捨五入
bigdecimal類的主要功能是進行小數的大數計算,而且最重要的是可以精確到指定的四捨五入位數。如果要進行四捨五入的操作,則必須依靠以下的方法 public bigdecimal divide bigdecimal divisor,int scale,int roundingmode scale ...
BigDecimal四捨五入保留小數的坑
用bigdecimal做四捨五入保留小數時要注意一點,引數建議是string型別。double型別存在精度問題的坑!下面直接放圖看 這是錄入的資料小數點後有7位 用string型別引數 數值保留六位並且四捨五入 cell.setcellstyle cellstyledouble bigdecimal...
BigDecimal的保留位數和四捨五入的方法
一 bigdecimal num new bigdecimal 2.225667 一般都會這樣寫最好 int count num.scale system.out.println count 6 返回的是小數點後位數 1.round down bigdecimal b new bigdecimal ...