BigDecimal 类
11.10 BigDecimal 类
使用BigDecimal的原因:不能精确【例子不合适,忽略吧】
package jiaqi;
public class demo347_1
{
public static void main(String[] args)
{
float f1 = 0.01f;
float f2=0.000000000000001f;
System.out.println(f1+f2);
}
}
表11-15 BigDecimal的常用方法
【例11.36】进行四舍五入的四则运算
package jiaqi;
import java.math.BigDecimal;
class Mymath
{
//不保留小数
public static double add(double b1,double b2)
{
BigDecimal bd1 = new BigDecimal(b1);
BigDecimal bd2 = new BigDecimal(b2);
return bd1.add(bd2).doubleValue();
}
//不保留小数
public static double sub(double b1,double b2)
{
BigDecimal bd1 = new BigDecimal(b1);
BigDecimal bd2 = new BigDecimal(b2);
return bd1.subtract(bd2).doubleValue();
}
//不保留小数
public static double mul(double b1,double b2)
{
BigDecimal bd1 = new BigDecimal(b1);
BigDecimal bd2 = new BigDecimal(b2);
return bd1.multiply(bd2).doubleValue();
}
//保留小数
public static double div(double b1,double b2,int len)
{
BigDecimal bd1 = new BigDecimal(b1);
BigDecimal bd2 = new BigDecimal(b2);
return bd1.divide(bd2,len,BigDecimal.ROUND_HALF_UP).doubleValue();
}
//四舍五入【使用divide实现】------->用于 加减乘 保留,除 自带
public static double round(double b,int len)
{
BigDecimal bd1 = new BigDecimal(b);
BigDecimal bd2 = new BigDecimal(1);
//除1【保留位数】
return bd1.divide(bd2,len,BigDecimal.ROUND_HALF_UP).doubleValue();
}
}
public class demo347_1
{
public static void main(String[] args)
{
System.out.println(Mymath.round(Mymath.add(10,3.3333),3));
System.out.println(Mymath.round(Mymath.sub(10,3.3333),3));
System.out.println(Mymath.round(Mymath.mul(10,3.3333),3));
System.out.println(Mymath.div(10,3,3));
}
}
上面程序中最重要的就是r o u nd ()方法,此处的四舍五入操作实际上是利用di v ide()方法实现 的,因为只有此方法才可以指定小数点之后的位数,而且任何一个数字除以1都是原数字.