java 取餘數 : %,BigDecimal 和oracle的比較
阿新 • • 發佈:2019-01-08
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的結果是一樣好。