1. 程式人生 > >java 取餘數 : %,BigDecimal 和oracle的比較

java 取餘數 : %,BigDecimal 和oracle的比較


double value1=1000

double divisor=0.01

double result=0

result =value1%0.01


這時候result的結果會是0.00999 ,這個明顯是有問題的,因為這個結果應該是0

為了解決這個問題,java 的BigDecimal有個取餘數的方法

BigDecimal[] java.math.BigDecimal.divideAndRemainder(BigDecimal divisor)


這個方法會返回一個數組,有兩個元素。

divideAndRemainder(BigDecimal divisor)[0] 是商,

divideAndRemainder(BigDecimal divisor)[1]是餘數。

BigDecimal value1=new BigDecimal(1000,new MathContext(6));
BigDecimal divisor=new BigDecimal(0.01,new MathContext(6));
 BigDecimal result=null;

result=value1.divideAndRemainder(divisor)[1];


這個時候result就會為 0

oracle本身也提供一個mod(value1,divisor)函式,這個函式用起來更方便。

select mod(value1,divisor)  from dual;


上面這個語句就可以幫助得出餘數。而且即便除數是0.01,結果和BigDecimal的結果是一樣好。