一.简介
BigDecimal 在 MySQL中为 decimal ,这个也是可以存储小数点的数值,相比较于 double来说,decimal的精度更加的准确,如果用这些小数点的小伙伴们,一定要记住 decimal(10,2) 这也就是保留两位小数,如果不写保留几位的话,存入之后都会被抛弃
二.加减乘除
加法:add
减法:subtract
乘法:multiply
除法:divide
//加法 bignum3 = bignum1.add(bignum2); System.out.println("求和:" + bignum3);
//减法 bignum3 = bignum1.subtract(bignum2); System.out.println("求差:" + bignum3);
//乘法 bignum3 = bignum1.multiply(bignum2); System.out.println("乘法积:" + bignum3);
//除法 bignum3 = bignum1.divide(bignum2); System.out.println("除法结果:" + bignum3);
三.除以后保留两位小数
本来是准备在除法以后增加.setSacle()的,后来发现如果出来乘除之后无限循环,那么会报错
BigDecimal big = new BigDecimal(4); big=big.divide(new BigDecimal(3),2,BigDecimal.ROUND_HALF_UP);//会在除完直接保留两位
四.直接保留两位小数(四舍五入)
BigDecimal big = new BigDecimal(4); big.setScale(2, RoundingMode.HALF_UP);
1.setScale简单用法
BigDecimal.setScale();//用于格式化小数点 setScale(1);//表示保留一位小数,默认用四舍五入方式 setScale(1,BigDecimal.ROUND_DOWN);//直接删除多余的小数位,如2.35会变成2.3 setScale(1,BigDecimal.ROUND_UP);//进位处理,2.33变成2.4 setScale(1,BigDecimal.ROUND_HALF_UP);//四舍五入,2.35变成2.4 setScaler(1,BigDecimal.ROUND_HALF_DOWN);//四舍五入,如果5以下则舍弃,2.34 变成 2.3,如果5以上包括5就会 2.35 变成 2.4
五.BigDecimal的比较
1.BigDecimal的非0判断
BigDecimal big = new BigDecimal(0); big.compareTo(BigDecimal.ZERO)==0,返回true则等于0,返回false,则不等于0
2.BigDecimal之间的比较
BigDescimal bd1 = new BigDescimal(); BigDescimal bd2 = new BigDescimal(); Integer a = bd1.compareTo(bd2); a = -1,表示bd1小于bd2; a = 0,表示bd1等于bd2; a = 1,表示bd1大于bd2;
六. BigDecimal在数据库中的存储
decimal 这个字段 如果不跟任何的限制,那么默认 decimal(10) 也就是十位数,还是整数 如果是 decimal(10,5) 意思是 十位数其中有五位是小数点,也就是 50000.00000, 如果出现前五位超出范围了,比如 500000,那么就会爆出DataIntegrityViolationException,超出范围 decimal(设置多长,设置后面跟多少位小数,如果不够零补全);