BigDecimal

  1. BigDecimal可以防止精度丢失,所谓精度丢失就比如说两个小数点后两位的数相加后变成了小数点后好多位,这就发生了精度丢失。
  2. double类型的变量不要直接用BigDecimal来构建,那样子出来的BigDecimal的值不等于原来的double。
  3. 一下是简单的实例
    //BigDecimal可以把所有基本类型变量都转换成一个BigDecimal对象,也包括用字符串,字符数组来创建BigDeciaml对象
    
    
    package com.test;
    
    import java.math.BigDecimal;
    
    public class Main {
    
        public static void main(String[] args) {
    	// write your code here
    //      当需要由double类型变量来构造Bigcimal的时候,不要用new BigDecimal()来构造,因为new BigDecimal()构造出来的并不完全等于原来那个double
    
            BigDecimal bigDecimal =  BigDecimal.valueOf(0.222);
    //        bigDecimal的真实值是 0.222
    
            BigDecimal bigDecimal2 = new BigDecimal(0.222);
    //      bigDecimal2的真实值是  0.2220000000000000028865798640254070051014423370361328125
    
    
    
    
    
    
        }
    }
    
    //BigDecimal的作用是为了防止精度丢失,就是本来两个小数点后两位的数相加变成了一个小数点后好好多位的数成为精度丢失
    
    package Arith;
    
    import java.math.BigDecimal;
    
    public class Arith {
    
        private static final int DEF_DIV_SCALE = 10;
    
        private Arith(){
    
        }
    
    
        public static double add(double v1,double v2){
            BigDecimal b1 = BigDecimal.valueOf(v1);
            BigDecimal b2 = BigDecimal.valueOf(v2);
            return b1.add(b2).doubleValue();
        }
    
    
    
        public static double sub(double v1,double v2){
            BigDecimal b1 = BigDecimal.valueOf(v1);
            BigDecimal b2 = BigDecimal.valueOf(v2);
            return b1.subtract(b2).doubleValue();
        }
    
    
        public static double mul(double v1,double v2){
            BigDecimal b1 = BigDecimal.valueOf(v1);
            BigDecimal b2 = BigDecimal.valueOf(v2);
            return b1.multiply(b2).doubleValue();
        }
    
    
        public static double div(double v1,double v2){
            BigDecimal b1 = BigDecimal.valueOf(v1);
            BigDecimal b2 = BigDecimal.valueOf(v2);
            return b1.divide(b2, DEF_DIV_SCALE, BigDecimal.ROUND_HALF_UP).doubleValue();
        }
    
    
    
    
    
        public static void  main(String args[]){
            System.out.print( Arith.add(0.003, 0.02));
    //        输出 0.023
            
            Arith.sub(0.003, 0.02);
            Arith.mul(0.03, 0.02);
            Arith.div(0.03, 0.02);
        }
    }
    

     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值