BigDecimal的使用

  • 思考:一下程序输出结果是多少?
public class TestBigDecimal{
    public static void main(String[] args){
        double d1 = 1.0;
        double d2 = 0.9;
        System.out.println(d1-d2);
    }
}

































[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lnLGIHi5-1608466396357)(D:\学习\tupian\bigdecimal\de.png)]












Why???






  • 因为float和double只能用来做科学计算或者是工程计算,在商业计算中我们要用 java.math.BigDecimal。

BigDecimal的使用

  • 位置:Java.math包中。

  • 作用:精确计算浮点数。

  • 创建方式:BigDecimal bd = new BigDecimal(“1.0”);

  • 方法:

      1. BigDecimal add(BigDecimal bd) 加
      1. BigDecimal subtract(BigDecimal bd) 减
      1. BigDecimal multiply(BigDecimal bd) 乘
      1. BigDecimal divide(BigDecimal bd) 除
      • 除法:divide(BigDecimal bd,int scal,RoundingMode mode)
      • 参数scal:指定精确到小数点后几位。
      • 参数mode:
        • 指定小数部分的取舍模式,通常采用四舍五入的模式
        • 取值为BigDecimal.ROUND_HALF_UP
double d1 = 1.0;
double d2 = 0.9;
System.out.println(d1-d2);

// 面试题
double result = (1.4-0.5)/0.9;
System.out.pritln(result);
// BigDecimal,大的浮点数精确计算
BigDecimal bd1 = new BigDecimal("1.0");
BigDecimal bd2 = new BigDecimal("0.9");

// 减法
BigDecimal r1 = bd1.subtract(bd2);
System.out.println(r1);

// 加法
BigDecimal r2 = bd1.add(bd2);
System.out.println(r2);

// 乘法
BigDecimal r3 = bd1.multiply(bd2);
System.out.println(r3);

// 除法
BigDecimal r4 = new BigDecimal("1.4")
    .subtract(new BigDecimal("0.5"))
    .divide(new BigDecimal("0.9"));
System.out.println(r4);

// 因为10除以3会有余数,如果除不尽会出现报错,
// 所以我们这里加了int scal,RoundingMode mode两个参数
BigDecimal r5 = new BigDecimal("10").divide(new BigDecimal("3")
                                            ,2,BigDecimal
                                           .ROUND_HALF_UP);

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值