BigDecimal加减乘除及四舍五入保留两位小数

java | 2019-09-13 10:02:39

Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal。BigDecimal所创建的是对象,我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。方法中的参数也必须是BigDecimal的对象。构造器是类的特殊方法,专门用来创建对象,特别是带有参数的对象。


//BigDecimal四舍五入保留两位小数

BigDecimal bigDecimal = bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP);


//加  
BigDecimal bd1 = new BigDecimal("0.09");  
BigDecimal bd2 = new BigDecimal("0.01");  
System.out.println("add:" + bd1.add(bd2));  
System.out.println("----------------------");  
//减  
BigDecimal bd3 = new BigDecimal("1.0");  
BigDecimal bd4 = new BigDecimal("0.32");  
System.out.println("subtract:" + bd3.subtract(bd4));  
System.out.println("----------------------");  
//乘  
BigDecimal bd5 = new BigDecimal("1.015");  
BigDecimal bd6 = new BigDecimal("100");  
System.out.println("multiply:" + bd5.multiply(bd6));  
System.out.println("----------------------");  
//除  
BigDecimal bd7 = new BigDecimal("1.301");  
BigDecimal bd8 = new BigDecimal("100");  

System.out.println("divide:" + bd7.divide(bd8)); 
//比较
System.out.println(new BigDecimal("1.2").equals(new BigDecimal("1.20")));  //输出false  
System.out.println(new BigDecimal("1.2").compareTo(new BigDecimal("1.20")) == 0); //输出true  


另外:
BigDecimal b1=new BigDecimal(0.2);
BigDecimal b2=new BigDecimal("0.2");

b1和b2是不相等的,所以一般用字符串构造方法

登录后即可回复 登录 | 注册
    
关注编程学问公众号