package com.hxzkoa.util; import java.math.BigDecimal; public class CalculatorUtil { /** * C:向上取整;I:向下取整;R:四舍五入 * @param m * @param k,此处运算要使用BigDecimal,否则float或double会出现精度丢失, * @param qzms * @return */ public static Integer multiRound(String m,String newBl,String bl,String qzms){ return multiRound(new BigDecimal(m),new BigDecimal(newBl),new BigDecimal(bl),qzms); } public static Integer multiRound(BigDecimal m,BigDecimal newBl,BigDecimal bl,String qzms){ Integer total=0; switch (qzms){ case "C": total=(int) Math.ceil(m.multiply(newBl).divide(bl).doubleValue()); break; case "I": total=(int) Math.floor(m.multiply(newBl).divide(bl).doubleValue()); break; case "R": total=(int) Math.round(m.multiply(newBl).divide(bl).doubleValue()); break; default: total=0; } return total; } public static void main(String[] args) { System.out.println(CalculatorUtil.multiRound("30","105","100","R")); } }