BigInteger 和 BigDecimal

注意:构造BigDecimal时,其初始值参数必须是字符串,否则参与计算时就会不精确。 例:
BigDecimal b1=new BigDecimal(5.00); BigDecimal b2=new BigDecimal(6.51);
System.out.println(b1.multiply(b2));
输出的是:32.5499999999999989341858963598497211933135986328125

BigDecimal b1=new BigDecimal(“5.00”); BigDecimal b2=new BigDecimal(“6.51”);
System.out.println(b1.multiply(b2));
就不会有问题。

这两个类存在原因:
(1)保存无限大的数,不会出现内存益处。只会出现磁盘装不下 (2)BigDecimal用于精确的浮点数计算,不会出现近似值的情况。
技巧:
(1)构造方式
double v1=12D; int v3=21;
BigDecimal b1 = new BigDecimal(v1+"");//构造 BigInteger b3 = new BigInteger(v3+"");
(2)加减乘除
b1 = b1.add(b2) b1 =b1.subtract(b2) b1 =b1.multiply(b2)
//被除数,小数保留位数,按什么方式进行四舍五入。
b1 =b1.divide(b2, 2, BigDecimal.ROUND_HALF_UP)//这儿用的4舍5入
说明:
BigDecimal.ROUND_HALF_UP如果舍弃部分 >= 0.5,则舍入 BigDecimal.ROUND_HALF_DOWN舍弃部分 > 0.5,则舍入行
dicemalNum.setScale(2, BigDecimal.ROUND_HALF_UP);




(3)将其转换为各种类型
b1.doubleValue(); b1.floatValue(); b1.intValue(); b1.toString();















(1)百分数
public static void main(String[] args){
NumberFormat nf = NumberFormat.getPercentInstance();
nf.setMaximumIntegerDigits(3); // 设置数的整数部分所允许的最大位数 nf.setMaximumFractionDigits(2);// 设置数的小数部分所允许的最大位数 double d = 0.2;
System.out.println(nf.format(d)); }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值