当前位置: 代码迷 >> J2SE >> 求教大伙个小疑点,关于BigDecimal类的divide().
  详细解决方案

求教大伙个小疑点,关于BigDecimal类的divide().

热度:2446   发布时间:2013-02-25 00:00:00.0
求教大伙个小问题,关于BigDecimal类的divide()..................
Java code
import java.math.*;public class Test {    public static void main(String[] args) {        BigDecimal a=new BigDecimal(0.5);        BigDecimal b=new BigDecimal(0.2);        System.out.println(a.divide(b));                }}


报错········
我表示不是很理解,如果为5 和 2的话,完全没有问题。

------解决方案--------------------------------------------------------
无穷的十进制扩展,我的理解是无限位数的小数,例如0.33333……,所以1和3也是会报错的
0.5和0.2可以是因为这个商的位数是有限的。
可以用public BigDecimal divide(BigDecimal divisor,int roundingMode)去解决。
例如:
Java code
    BigDecimal a = new BigDecimal(0.5);        BigDecimal b = new BigDecimal(0.2);        BigDecimal c = a.divide(b,BigDecimal.ROUND_HALF_EVEN);        System.out.println(c);
------解决方案--------------------------------------------------------
BigDecimal 使用户能完全控制舍入行为。如果未指定舍入模式,并且无法表示准确结果,则抛出一个异常;

建议使用:pubilc BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)
  相关解决方案