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%" } }