/* BigDecimal类
*
* 现象:java中double类型计算时可能出现精度丢失问题。比如在对一系列double数值进行累加的时候:3.41+5.2+56.2+23.3+... (这类两位小数的价钱),结果会出现103.00000000000001这种结果
* 原因:用2进制表示10进制小数时,部分小数只是近似的表示。
* 解决方法:使用BigDecimal类进行货币的运算。
* 1.定义变量:
* double d1=3.1415926;
* String s1="9.87654321";
* BigDecimal bd1=new BigDecimal(d1);//BigDecimal(double)//注意最好的初始化方法是把double值转变为String,否则仍可能出现精度丢失问题。
* BigDecimal bd2=new BigDecimal(d2);//BigDecimal(String)
* 2.加减乘除模:
* bd1.add(bd2);//加法add
* bd1.add(bd2.negate());//求反negate()
* bd1.multiply(bd2);//multiply乘法
* bd1.divide(bd2);//divide除法
* bd1.remainder(bd2);//remainder求模
* 3.输出数值:
* double d2=bd1.doubleValue();
* int i1=bd1.intValue();
* 4.舍入
* a.RoundingMode枚举
* 使用方法:RoundingMode.HALF_UP
CEILING
向正无限大方向舍入的舍入模式。->oo
UP
远离零方向舍入的舍入模式。0->
DOWN
向零方向舍入的舍入模式。->0
FLOOR
向负无限大方向舍入的舍入模式。->-oo
HALF_UP
四舍五入:向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向上舍入。
HALF_DOWN
向最接近数字方向舍
BigDecimal类——解决double精度丢失
最新推荐文章于 2025-03-06 14:51:29 发布