setScale(int newScale,int roundingMode)
请问大家,第二个参数roundingMode是什么意思?

解决方案 »

  1.   

    从API里拷贝来,看看它的取值的英文单词就明白是什么意思了:
    roundingMode - 要应用的舍入模式。 
    可选一下的值:
    ROUND_UP, ROUND_DOWN, ROUND_CEILING, ROUND_FLOOR, ROUND_HALF_UP, ROUND_HALF_DOWN, ROUND_HALF_EVEN, ROUND_UNNECESSARY
      

  2.   

    ROUND_UP, ROUND_DOWN, ROUND_CEILING, ROUND_FLOOR, ROUND_HALF_UP, ROUND_HALF_DOWN, ROUND_HALF_EVEN, ROUND_UNNECESSARY对应的int 具体是什么呢? 
      

  3.   

    ROUND_CEILING 
    大于等于该数的那个最近值ROUND_DOWN 
    正数是小于等于该数的那个最近数,负数是大于等于该数的那个最近数ROUND_FLOOR 
    小于等于该数的那个值ROUND_HALF_DOWN 
    五舍六入ROUND_HALF_EVEN 
    向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,如果保留位数是奇数,使用ROUND_HALF_UP ,如果是偶数,使用ROUND_HALF_DOWN 
    ROUND_HALF_UP 
    四舍五入ROUND_UNNECESSARY 
    计算结果是精确的,不需要舍入模式 ROUND_UP 
    和ROUND_DOWN相反
      

  4.   

    不要用这个int值,难保以后会变。用BigDecimal.XXX的方式来取用好了。
      

  5.   

    谢谢大家
    BigDecimal的setScale重载函数有三个
     我还是想知道setScale(int i,int j) 第二参数 j 代表什么意思?
      

  6.   

    ROUND_CEILING等是在BigDecimal类上定义的整数常量,比方说BigDecimal.ROUND_CEILING的整数值就是2。你说的那个j就是一个整数,表示舍入模式,为了使代码阅读性更强,同时防止输入不合法的舍入模式值,应该使用像BigDecimal.ROUND_CEILING这样的写法,而不是直接送个2进去。