public BigDecimal divide(BigDecimal val,
                          int roundingMode) throws ArithmeticExceptionBigDecimal的除法运算roundingMode有几中,分别是什么意思。哪个是直接舍去指定的小数位数(如舍去小数点后第三位,不做四舍五入运算)。请各位高手指教。谢谢!

解决方案 »

  1.   

    http://java.sun.com/j2se/1.4.2/docs/api/java/math/BigDecimal.html#divide(java.math.BigDecimal,%20int,%20int)
      

  2.   

    roundMode是指舍位时候的模式,传参数的时候用BigDecimal.ROUND_XXXX_XXX,
    有:ROUND_CEILING: 舍位时往正无穷方向移动 1.1->2 1.5->2 1.8->2 -1.1->-1 -1.5->-1 -1.8->-1
    ROUND_DOWN:向0的方向移动1.1->1 1.5->1 1.8->1 -1.1->-1 -1.5->-1 -1.8>-1
    ROUND_FLOOR:与CEILING相反,往负无穷 1.1->1 1.5->1 1.8->1 -1.1->-2 -1.5->-2 -1.8->-2
    ROUND_HALF_DOWN:以5为分界线,或曰五舍六入1.5->1 1.6->1 -1.5->-1 -1.6->-2 
    ROUND_HALF_EVEN:同样以5为分界线,如果是5,则前一位变偶数1.15->1.2 1.16->1.2 1.25->1.2 1.26->1.3
    ROUND_HALF_UP:最常见的四舍五入
    ROUND_UNNECESSARY:无需舍位
    ROUND_UP:与ROUND_DOWN,远离0的方向1.1->2 1.5->2 1.8->2 -1.1->-2 -1.5->-2 -1.8->-2具体精确到几位因该采用
    商=被除数.devide(除数,保留小数位数,精确方法)
      

  3.   

    lz的“舍去小数点后第三位,不做四舍五入运算”似乎应当是商=被除数.devide(除数,2,BigDecimal.ROUND_DOWN或者FLOOR)DOWN和FLOOR在正数方面表现一致,就是在负数方面不同,估计是DOWN的可能性比较大