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