日期:2014-05-20  浏览次数:20806 次

BigDecimal divide(BigDecimal divisor, int scale, int roundingMode) 方法
BigDecimal b = new BigDecimal(“10.01”);
b.divide(1,2,4);返回多少是10.00还是10.01


请详细说一下这个方法,API文档没看懂

------解决方案--------------------
10.01
2 表示2位小数
4 是ROUND_HALF_UP,也就是最常见的四舍五入,大于一般则向上舍入,否则向下舍入
------解决方案--------------------
我看api
是RundingMode的下标
所以我用
RoundingMode rm =RoundingMode.valueOf(4);
System.out.println(rm);
打印出的结果是HALF_UP
查api
HALF_UP 
向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向上舍入。 
貌似是四舍五入。
public static void main(String args[]){
RoundingMode rm =RoundingMode.valueOf(4);
System.out.println(rm);
BigDecimal b = new BigDecimal("10.015");
b=b.divide(new BigDecimal(1),2,4);
System.out.print(b);
}
楼主自己测试,如果小数后面的位数等于你要求的精度,那么就也就不会进行四舍五入判断了。如果小于你的精度就后面补零。大于你的精度就四舍五入。
API还说负数的情况不一样。请区别考虑。


------解决方案--------------------
你要计算double的精度问题
应该使用默认传入参数为String的构造函数。直接传入Double的构造函数是不行的