BigDecimal divide(BigDecimal divisor, int scale, int roundingMode) 方法 BigDecimal b = new BigDecimal(“10.01”);b.divide(1,2,4);返回多少是10.00还是10.01请详细说一下这个方法,API文档没看懂 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 10.012 表示2位小数4 是ROUND_HALF_UP,也就是最常见的四舍五入,大于一般则向上舍入,否则向下舍入 BigDecimal b = new BigDecimal("10.016"); //LZ 用3位小数来测试看就知道了 10.013b = b.divide(BigDecimal.ONE, 2, 4);System.out.println(b); 我看api是RundingMode的下标所以我用RoundingMode rm =RoundingMode.valueOf(4); System.out.println(rm);打印出的结果是HALF_UP查apiHALF_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还说负数的情况不一样。请区别考虑。 谢了上面两位,我一直以为是divide方法原因,后来测试发现,如下 public static void main(String[] args) { BigDecimal v =new BigDecimal( "10.01"); System.out.println(v); BigDecimal b = new BigDecimal(v.floatValue()); System.out.println(b); b.divide(BigDecimal.ONE,2,4); System.out.println(b.divide(BigDecimal.ONE,2,4)); }这样输出 v是10.01,b是10.0100002288818359375,最后的是10.01。但是把10.01改成500000.01后v是500000.01,b是500000,最后是500000.01不知道这是什么原因。求指教 你要计算double的精度问题应该使用默认传入参数为String的构造函数。直接传入Double的构造函数是不行的 myeclipse blue7 svn找不到 使用匿名类的问题…… 大虾救命!!! 重装系统后连数据库出问题了,请帮我一下下。。 新手上路,请教一个简单问题 好容易写完了一个小程序,可是....... 请教:如何实现点击一个image后,该image在Applet中移动位置?有示例代码吗?谢谢!! FileDexcriptor用途 一个很菜的问题,还请大家相告! 关于扑克牌的抽取问题,希望帮帮我!52张扑克.... 新人,关于StringBuilder的equals方法,求大神指点一下 final的困惑
2 表示2位小数
4 是ROUND_HALF_UP,也就是最常见的四舍五入,大于一般则向上舍入,否则向下舍入
b = b.divide(BigDecimal.ONE, 2, 4);
System.out.println(b);
是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还说负数的情况不一样。请区别考虑。
BigDecimal v =new BigDecimal( "10.01");
System.out.println(v);
BigDecimal b = new BigDecimal(v.floatValue());
System.out.println(b);
b.divide(BigDecimal.ONE,2,4);
System.out.println(b.divide(BigDecimal.ONE,2,4));
}这样输出 v是10.01,b是10.0100002288818359375,最后的是10.01。
但是把10.01改成500000.01后
v是500000.01,b是500000,最后是500000.01不知道这是什么原因。求指教
应该使用默认传入参数为String的构造函数。直接传入Double的构造函数是不行的