luodangjia
2025-01-01 196ac84b6ec0dd05304dd6577f169f7fbf5fe726
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
37
package com.sinata.web.controller.tool;
 
import java.math.BigDecimal;
import java.math.RoundingMode;
 
public class CapacityUtil {
 
    /**
     * 计算已存数量占最大容量的百分比,并保留两位小数
     *
     * @param count 已存数量
     * @param maxCapacity 最大容量
     * @return 百分比(保留两位小数)
     */
    public static String calculatePercentage(Long count, Integer maxCapacity) {
        if (maxCapacity == null || maxCapacity <= 0) {
            throw new IllegalArgumentException("Max capacity must be greater than 0.");
        }
 
        // 使用 BigDecimal 进行精确计算
        BigDecimal countBD = new BigDecimal(count);
        BigDecimal maxCapacityBD = new BigDecimal(maxCapacity);
        BigDecimal percentage = countBD.divide(maxCapacityBD, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
 
        // 保留两位小数
        return percentage.setScale(2, RoundingMode.HALF_UP).toString() + "%";
    }
 
    // 示例用法
    public static void main(String[] args) {
        Long count = 75L; // 示例已存数量
        Integer maxCapacity = 100; // 示例最大容量
 
        // 计算并打印百分比
        System.out.println(calculatePercentage(count, maxCapacity)); // 输出 "75.00%"
    }
}