A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© q19871127 中级黑马   /  2015-6-15 16:19  /  274 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

当我们对浮点数进行运算时,不要使用基本数据类型:float和double。因为很容易会产生精度丢失的问题:
                  System.out.println(0.09 + 0.01);
                System.out.println(1.0 - 0.32);
                System.out.println(1.015 * 100);
                System.out.println(1.301 / 100);
        以上运算都会丢失精度
         对于浮点运算,要使用BigDecimal类。
         推荐使用的构造方法:
         public BigDecimal(String val)
   成员方法:
           public BigDecimal add(BigDecimal augend):加
        public BigDecimal subtract(BigDecimal subtrahend):减
        public BigDecimal multiply(BigDecimal multiplicand):乘
        public BigDecimal divide(BigDecimal divisor):除
(推荐)public BigDecimal divide(BigDecimal divisor,int scale, int roundingMode):除法。可以指定精度,以及舍入方式;
        参数:
        divisor - 此 BigDecimal 要除以的值。
        scale - 要返回的 BigDecimal 商的标度。
        roundingMode - 要应用的舍入模式。

                BigDecimal big1 = new BigDecimal("0.00009");
                BigDecimal big2 = new BigDecimal("0.01");
               
                //加
                BigDecimal bigResult = big1.add(big2);
                System.out.println("加法:" + bigResult);

                //减
                bigResult = big1.subtract(big2);
                System.out.println("减法:" + bigResult);

                //乘法:
                bigResult = big1.multiply(big2);
                System.out.println("乘法:" + bigResult);

                //除法:
                bigResult = big1.divide(big2);
                System.out.println("除法:" + bigResult);
               
                //除法:要求:取小数点后两位,并且四舍五入
                bigResult = big1.divide(big2,2,RoundingMode.HALF_UP);
                System.out.println("保留2位小数,并四舍五入:" + bigResult);

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马