bigdecimaljava最⼤值_JavaBigDecimal类常⽤⽅法⼤全
Java BigDecimal类常⽤⽅法⼤全
2020-01-02 23:40:19 卢浮宫 版权声明:本⽂为站长原创⽂章,转载请写明出处 QQ分享
⼀、在⾼精度数据处理时
前端:BigNumber.js
后端:BigDecimal
PS:其实还有⼀种操作就是:⾦额计算前乘以10000然后进⾏操作,最后的结果统⼀除以10000
⼆、这⾥简单罗列下其常⽤⽅法(数据来源于⽹络)
2.1、常⽤的加减乘除1. BigDecimal(String val):构造⽅法,将String类型转换成BigDecimal类型数据。2. BigDecimal(double val):构造⽅法,将double类型转换成BigDecimal类型数据。
3. BigDecimal(int val):构造⽅法,将int类型转换成BigDecimal类型数据。
4. BigDecimal add(BigDecimal value):加法,求两个BigDecimal类型数据的和。
5. BigDecimal subtract(BigDecimal value):减法,求两个BigDecimal类型数据的差。
6. BigDecimal multiply(BigDecimal value):乘法,求两个BigDecimal类型数据的积。bigdecimal除法保留小数
7. BigDecimal divide(BigDecimal divisor, 2, BigDecimal.ROUND_UP) :
除法,求两个BigDecimal类型数据的商,保留两位⼩数。8. BigDecimal remainder(BigDecimal divisor):求余数,求BigDecimal类型数据除以divisor的余数。9. BigDecimal max(BigDecimal value):最⼤数,求两个BigDecimal类型数据的最⼤值。10. BigDecimal
min(BigDecimal value):最⼩数,求两个BigDecimal类型数据的最⼩值。11. BigDecimal abs():绝对值,求BigDecimal类型数据的绝对值。12. BigDecimal negate():相反数,求BigDecimal类型数据的相反数。
2.2、常⽤的四舍五⼊
只有在作除法运算或四舍五⼊时才⽤到舍⼊模式,有下⾯这⼏种:ROUND_UP :向远离零的⽅向舍⼊。舍弃⾮零部分,并将⾮零舍弃部分相邻的⼀位数字加⼀。ROUND_DOWN :向接近零的⽅向舍⼊。舍弃⾮零部分,同时不会⾮零舍弃部分相邻的⼀位数字加⼀,采取截取⾏为。ROUND_CEILING:向正⽆穷的⽅向舍⼊。如果为正数,舍⼊结果同ROUND_UP⼀致;如果为负数,
舍⼊结果同ROUND_DOWN⼀致。注意:此模式不会减少数值⼤⼩。ROUND_FLOOR:向负⽆穷的⽅向舍⼊。如果为正数,舍⼊结果同ROUND_DOWN⼀致;
如果为负数,舍⼊结果同ROUND_UP⼀致。注意:此模式不会增加数值⼤⼩。ROUND_HALF_UP :向“最接近”的数字舍⼊,如果与两个相邻数字的距离相等,则为向上舍⼊的舍⼊模式。
如果舍弃部分>= 0.5,则舍⼊⾏为与ROUND_UP相同;否则舍⼊⾏为与ROUND_DOWN相同。
这种模式也就是我们常说的我们的“四舍五⼊”。ROUND_HALF_DOWN :向“最接近”的数字舍⼊,如果与两个相邻数字的距离相等,则为向下舍⼊的舍⼊模式。
如果舍弃部分> 0.5,则舍⼊⾏为与ROUND_UP相同;否则舍⼊⾏为与ROUND_DOWN相同。
这种模式也就是我们常说的我们的“五舍六⼊”。ROUND_HALF_EVEN :向“最接近”的数字舍⼊,如果与两个相邻数字的距离相等,则相邻的偶数舍⼊。
如果舍弃部分左边的数字奇数,则舍⼊⾏为与 ROUND_HALF_UP 相同;如果为偶数,则舍⼊⾏为与ROUND_HALF_DOWN 相同。注意:在重复进⾏⼀系列计算时,此舍⼊模式可以将累加错误减到最⼩。此舍⼊模式也称为“银⾏家舍⼊法”,
主要在美国使⽤。四舍六⼊,五分两种情况,如果前⼀位为奇数,则⼊位,否则舍去。ROUND_UNNECESSARY :断⾔请求的操作具有精确的结果,因此不需要舍⼊。如果对获得精确结果的操作指定此舍⼊模式,则抛出ArithmeticException。
2.3、常⽤的⽐较⼤⼩BigDecimal a =newBigDecimal (101); BigDecimal b = newBigDecimal (111);
//使⽤compareTo⽅法⽐较 //注意:a、b均不能为null,否则会报空指针 if(apareTo(b) == -1){
System.out.println("a⼩于b");
}
if(apareTo(b) == 0){
System.out.println("a等于b");
}
if(apareTo(b) == 1){
System.out.println("a⼤于b");
}
if(apareTo(b) > -1){
System.out.println("a⼤于等于b");
}
if(apareTo(b) < 1){
System.out.println("a⼩于等于b");
}
2.4、取⼩数部分BigDecimal bd =newBigDecimal("23452.4523434");BigDecimal fractionalPart = bd.remainder( BigDecimal.ONE );// Result: 0.4523434
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论