java 中的BigDecimal 舍入模式,及构造器精度
2016-10-24 14:26
260 查看
BigDecimal中的divide(BigDecimal divisor, int scale, int roundingMode) 方法,需要用到舍入模式。
roundMode是指舍位时候的模式,传参数的时候用BigDecimal.ROUND_XXXX_XXX,
有:
ROUND_CEILING: 舍位时往正无穷方向移动 1.1-> 2 1.5-> 2 1.8-> 2 -1.1-> -1 -1.5-> -1 -1.8-> -1
ROUND_DOWN:向0的方向移动1.1-> 1 1.5-> 1 1.8-> 1 -1.1-> -1 -1.5-> -1 -1.8> -1
ROUND_FLOOR:与CEILING相反,往负无穷 1.1-> 1 1.5-> 1 1.8-> 1 -1.1-> -2 -1.5-> -2 -1.8-> -2
ROUND_HALF_DOWN:以5为分界线,或曰五舍六入1.5-> 1 1.6-> 1 -1.5-> -1 -1.6-> -2
ROUND_HALF_EVEN:同样以5为分界线,如果是5,则前一位变偶数1.15-> 1.2 1.16-> 1.2 1.25-> 1.2 1.26-> 1.3
ROUND_HALF_UP:最常见的四舍五入
UNNECESSARY:无需舍位
ROUND_UP:与ROUND_DOWN,远离0的方向1.1-> 2 1.5-> 2 1.8-> 2 -1.1-> -2 -1.5-> -2 -1.8-> -2
然后构造器需注意的进度问题
public class BigDecimalMain {
public static void main(String args[]){
System.out.println(new BigDecimal(123456789.01).toString());
System.out.println(new BigDecimal("123456789.01").toString());
}
}
结果
123456789.01000000536441802978515625
123456789.01
很令我吃惊啊,我今天还一直纠结 2.11 怎么new BigDecimal(2.11)*100后 intValue()变成了2.10 ..看来连使用哪个构造器也不能疏忽大意啊.
建议使用bigDecimal.valueOf();尽量避免这些坑!!!
roundMode是指舍位时候的模式,传参数的时候用BigDecimal.ROUND_XXXX_XXX,
有:
ROUND_CEILING: 舍位时往正无穷方向移动 1.1-> 2 1.5-> 2 1.8-> 2 -1.1-> -1 -1.5-> -1 -1.8-> -1
ROUND_DOWN:向0的方向移动1.1-> 1 1.5-> 1 1.8-> 1 -1.1-> -1 -1.5-> -1 -1.8> -1
ROUND_FLOOR:与CEILING相反,往负无穷 1.1-> 1 1.5-> 1 1.8-> 1 -1.1-> -2 -1.5-> -2 -1.8-> -2
ROUND_HALF_DOWN:以5为分界线,或曰五舍六入1.5-> 1 1.6-> 1 -1.5-> -1 -1.6-> -2
ROUND_HALF_EVEN:同样以5为分界线,如果是5,则前一位变偶数1.15-> 1.2 1.16-> 1.2 1.25-> 1.2 1.26-> 1.3
ROUND_HALF_UP:最常见的四舍五入
UNNECESSARY:无需舍位
ROUND_UP:与ROUND_DOWN,远离0的方向1.1-> 2 1.5-> 2 1.8-> 2 -1.1-> -2 -1.5-> -2 -1.8-> -2
然后构造器需注意的进度问题
public class BigDecimalMain {
public static void main(String args[]){
System.out.println(new BigDecimal(123456789.01).toString());
System.out.println(new BigDecimal("123456789.01").toString());
}
}
结果
123456789.01000000536441802978515625
123456789.01
很令我吃惊啊,我今天还一直纠结 2.11 怎么new BigDecimal(2.11)*100后 intValue()变成了2.10 ..看来连使用哪个构造器也不能疏忽大意啊.
建议使用bigDecimal.valueOf();尽量避免这些坑!!!
相关文章推荐
- Java中BigDecimal的8种舍入模式
- 介绍Java的大数类(BigDecimal)和八种舍入模式
- Java中BigDecimal的8种舍入模式
- Java大数类BigDecimal及八种舍入模式的介绍
- Java中BigDecimal的8种舍入模式
- Java中BigDecimal的8种舍入模式
- java BigDecimal八种舍入模式
- Java中BigDecimal的8种舍入模式
- Java中BigDecimal的8种舍入模式
- Java中BigDecimal的8种舍入模式
- Java中BigDecimal的8种舍入模式是怎样的
- 【JavaSE】Java中BigDecimal的8种舍入模式
- Java中BigDecimal的8种舍入模式
- java中BigDecimal的几种舍入模式
- Java中BigDecimal的8种舍入模式
- Java大数类BigDecimal及八种舍入模式的介绍
- Java中BigDecimal的8种舍入模式
- Java中BigDecimal的8种舍入模式
- Java中BigDecimal的8种舍入模式
- 【Java】大数类BigDecimal及八种舍入模式研究