API(Bigdecimal)
public class bigdecimalDemon1 {
public static void main(String[] args) {
/*
构造方法获取对象
public BigDecimal(double val)
public BigDecimal(String val)
静态方法获取对象
public static BigDecimal valueOf(double val)
*/
//1.通过传递小数类型的数据获取对象(这种方式有可能是不精确的)
BigDecimal bd1=new BigDecimal(0.1);
BigDecimal bd2=new BigDecimal(0.1);
System.out.println(bd1);//0.1000000000000000055511151231257827021181583404541015625
System.out.println(bd2);//0.1000000000000000055511151231257827021181583404541015625
//2.通过传递字符串类型的数据获取对象(这种方式是精确的)
BigDecimal bd3=new BigDecimal("0.1");
BigDecimal bd4=new BigDecimal("0.1");
System.out.println(bd3);//0.1
System.out.println(bd4);//0.1
BigDecimal bd5=bd3.add(bd4);
System.out.println(bd5);//0.2
BigDecimal bd6=bd3.subtract(bd4);
System.out.println(bd6);//0.0
//3.通过静态方法获取对象
BigDecimal db7 = BigDecimal.valueOf(0.2);
System.out.println(db7);//0.2
BigDecimal db8 = BigDecimal.valueOf(10);
System.out.println(db8);//10
//如果超出double的范围建议使用构造方法,没有则使用静态方法
//如果传递的是0-10之间的整数,方法会返回创建好的对象,不会new一个新的对象
BigDecimal bd9=BigDecimal.valueOf(10);
System.out.println(db8==bd9);//true
//除法(可除尽的可以直接算除不尽的要加精度)
BigDecimal bd10=BigDecimal.valueOf(3);
BigDecimal bd11=db8.divide(bd10,3, RoundingMode.HALF_UP);//保留3位小数,四舍五入
System.out.println(bd11);//3.333
//UP:向远离零的方向舍入
//DOWN:向接近零的方向舍入
//CEILING:向正无穷方向舍入
//FLOOR:向负无穷方向舍入
//HALF_UP:向最接近数字方向舍入,如果与两个相邻数字的距离相等,则为向上舍入的舍入模式
//HALF_DOWN:向最接近数字方向舍入,如果与两个相邻数字的距离相等,则为向下舍入的舍入模式
}
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Hexo!