今天做了一个购物车的功能 ,设计到了钱的计算,使用到了BigDecimal 晚上回来总结下
这个BigDecimal 计算钱呢很好用
其主要有
1 add 加法
2 subtract 减法
3 multiply 乘法
4 divide 除法
一般我们的价格都是getText 获取的,这里定义2个String 代表 获取的价格
1 加法计算
BigDecimal num = new BigDecimal("1.01");
BigDecimal num1 =new BigDecimal("2.02");
System.out.print(num.add(num1));
2 减法计算
BigDecimal num = new BigDecimal("1.01");
BigDecimal num1 =new BigDecimal("2.02");
System.out.print(num1.subtract(num));
3 乘法计算
BigDecimal num = new BigDecimal("1.01");
BigDecimal num1 =new BigDecimal("2.02");
System.out.print(num1.multiply(num));
4 除法计算
BigDecimal num = new BigDecimal("1.01");
BigDecimal num1 =new BigDecimal("2.02");
System.out.print(num1.divide(num));
当然也可以混合在一起使用
保留 小数点后面几位数可以使用setScale 方法
如下 这个是保留2位
BigDecimal num = new BigDecimal("1.01");
BigDecimal num1 =new BigDecimal("2.02");
BigDecimal total = num.multiply(num1).setScale(2,RoundingMode.HALF_UP) ;
System.out.print(total);
注意注意注意
声明的时候不要 直接指定float 类型的
如下
BigDecimal num = new BigDecimal(1.01);
BigDecimal num1 =new BigDecimal(2.02);
这样的精度就会丢失了
如果想修改类型看下代码四舍五入保留一位小数点 在转为float类型
BigDecimal bar = new BigDecimal(item.getScore());
BigDecimal num = new BigDecimal(2);
float ratingBar = bar.divide(num).setScale(1,RoundingMode.HALF_UP).floatValue();
Log.e("---------ratingbar", String.valueOf(ratingBar));
完美解决后台返回 8.9,等之类的分数,计初多少颗星星问题。