fxl
2023-05-04 e150655a785de36a65a26a0dc4d3d6d65fe7e9d0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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"));
    }
}