BigDecimal

BigDecimal

:不可变的、任意精度的有符号十进制数
:由任意精度的整数非标度值和32位的整数标度组成
:使用原因:提供准确精度,适用于商业计算,浮点型float / double计算有失精度

对象创建
BigDecimal big1 = new BigDecimal("3.1415926");
BigDecimal big2 = BigDecimal.valueOf(3.1415924);
字段
BigDecimal pi = new BigDecimal("3.1415926");
BigDecimal ZERO = BigDecimal.ZERO;      		//  0
BigDecimal ONE = BigDecimal.ONE;        		//  1
BigDecimal TEN = BigDecimal.TEN;        		//  10

pi.setScale(3, BigDecimal.ROUND_UP);    		//  3.142   向上舍入
pi.setScale(3, BigDecimal.ROUND_DOWN);  		//  3.141   向下舍入
pi.setScale(3, BigDecimal.ROUND_CEILING);   	//  3.142   向正无穷大舍入
pi.setScale(3, BigDecimal.ROUND_FLOOR);     	//  3.141   向负无穷大舍入
pi.setScale(3, BigDecimal.ROUND_HALF_UP);		//  3.142  四舍五入,0.5入
pi.setScale(3, BigDecimal.ROUND_HALF_DOWN);		//  3.142    同上
pi.setScale(3, BigDecimal.ROUND_HALF_EVEN);		//  3.142    四舍五入,0.5向偶数舍入
方法
BigDecimal piBig = BigDecimal.valueOf(3.1415926);   //将值转换为 BigDecimal

/*  + - * / */
pi = pi.add(piBig);
pi = pi.subtract(piBig);
pi = pi.multiply(piBig);
pi = pi.divide(piBig);

/*  商 / 余  */
BigDecimal[] dr = new BigDecimal[2];
pi = pi.divideToIntegralValue(piBig);   //  商
pi = pi.remainder(piBig);       		//  余
dr = pi.divideAndRemainder(piBig);  	//  [商,余]

pi = pi.pow(2);     //  求幂
pi = pi.abs();      //  绝对值
pi = pi.negate();   //  -this   反数
pi = pi.plus();     //  +this

int signum = pi.signum();  						// 1 返回  正:1 / 零:0 / 负:-1
int scale = pi.scale();     				 	// 7 返回标度,零或正数为小数点后位数,负数返回非标度值*10的负 scale 次幂
int precision = pi.precision();					// 8 返回精度
BigInteger unscaledValue = pi.unscaledValue(); 	// 31415926 返回非标度值
        
/*  移位  */
pi = pi.movePointLeft(2);       // 0.031415926 小数点左移
pi = pi.movePointRight(2);      // 314.15926 小数点右移

/*  移位  */
pi = pi.movePointLeft(2);       // 0.031415926 小数点左移
pi = pi.movePointRight(2);      // 314.15926 小数点右移

int compareTo = pi.compareTo(piBig);    //  比较,大于1 / 等于0 / 小于-1
boolean equals = pi.equals(piBig);      //  比较,2.0 != 2.00

pi = pi.min(piBig);     //  返回较小值
pi = pi.max(piBig);     //  返回较大值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值