BigDecimal常用技巧
package com.wyw; import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; import org.apache.commons.lang3.StringUtils; public class ObjectDemo { public static void main(String[] args) throws Exception { //加法 //57.51262 System.out.println(new BigDecimal("1.25822").add(new BigDecimal("56.2544"))); //减法计算 //-4.007553 System.out.println(new BigDecimal("1.257447").subtract(new BigDecimal("5.265"))); //乘法计算 //3.2109175 System.out.println(new BigDecimal("2.5585").multiply(new BigDecimal("1.255"))); /** * 除法计算 //2.039 * 除法计算需要特别注意后面的两个参数,如果除尽的时候应该没问题,如果除不尽就会报错, * 所以这里需要舍子保留的小数位【3】跟计算结果取值办法【ROUND_HALF_UP】 */ System.out.println(new BigDecimal("2.5585").divide(new BigDecimal("1.255"),3,BigDecimal.ROUND_HALF_UP)); //这里介绍四个常用的计算结果处理办法,当然处理办法有很多,这四种比较常用 /* * 1.ROUND_DOWN * 这里表示在保留了三位小数后的结果全部去掉,很明显这种不太合理 * 运行结果:2.558 */ System.out.println(new BigDecimal("2.5588").setScale(3,BigDecimal.ROUND_DOWN)); /* * 2.ROUND_UP * 这里表示在保留了三位小数后的结果全部加1然后进到前一位,很明显这种不太合理 * 运行结果:2.559 */ System.out.println(new BigDecimal("2.5581").setScale(3,BigDecimal.ROUND_UP)); /** * 3.ROUND_HALF_UP * 这里是正常的四舍五入办法,最为合理 * 运行结果:2.558 */ System.out.println(new BigDecimal("2.5581").setScale(3,BigDecimal.ROUND_HALF_UP)); /* * 4.ROUND_HALF_DOWN * 这里是把数据保留了小数位以后当后面的一位是5则舍去,如果是6则入上去,相当于五舍六入 * 运行结果:2.556 */ System.out.println(new BigDecimal("2.5555").setScale(3,BigDecimal.ROUND_HALF_DOWN)); /** *两个BigDecimal比较大小的方法 compareTo() *如果前者比后者大返回 1,如果两个一样大返回 0,如果前者比后者小返回 -1 *此处运行结果为 -1 */ System.out.println(new BigDecimal("0.25").compareTo(new BigDecimal("0.26"))); } }