From f9b9c1126490768bf640c30282a9583733fa79fe Mon Sep 17 00:00:00 2001 From: gaoxq <376340421@qq.com> Date: Sun, 24 Aug 2025 22:56:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=8E=B7=E5=8F=96=E7=A3=81?= =?UTF-8?q?=E7=9B=98=E4=B8=BB=E6=9C=BA=E7=9A=84=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/mini/capi/utils/HostInfo.java | 3 +-- src/main/java/com/mini/capi/utils/vF.java | 16 +++++++++------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/mini/capi/utils/HostInfo.java b/src/main/java/com/mini/capi/utils/HostInfo.java index 8b87b76..a9f8bb9 100644 --- a/src/main/java/com/mini/capi/utils/HostInfo.java +++ b/src/main/java/com/mini/capi/utils/HostInfo.java @@ -6,7 +6,6 @@ import com.mini.capi.biz.domain.DiskMount; import com.mini.capi.biz.domain.SysHost; import java.io.*; -import java.math.BigDecimal; import java.util.*; public final class HostInfo { @@ -67,7 +66,7 @@ public final class HostInfo { return out.toString().trim(); } - private static void waitForExit(ChannelExec ch) throws Exception { + private static void waitForExit(ChannelExec ch) { long start = System.currentTimeMillis(); while (!ch.isClosed()) { if (System.currentTimeMillis() - start > 30_000) { diff --git a/src/main/java/com/mini/capi/utils/vF.java b/src/main/java/com/mini/capi/utils/vF.java index 4eacd6e..f4a0bd1 100644 --- a/src/main/java/com/mini/capi/utils/vF.java +++ b/src/main/java/com/mini/capi/utils/vF.java @@ -1,27 +1,29 @@ package com.mini.capi.utils; +import java.math.BigDecimal; +import java.math.RoundingMode; + public class vF { - private static final String[] UNITS = {"B", "K", "M", "G", "T", "P"}; - + private static final BigDecimal KB = BigDecimal.valueOf(1024L); public static String format(long bytes) { if (bytes < 0) { throw new IllegalArgumentException("字节数不能为负数"); } + BigDecimal size = BigDecimal.valueOf(bytes); int unitIndex = 0; - double size = bytes; - while (size >= 1024 && unitIndex < UNITS.length - 1) { - size /= 1024; + while (size.compareTo(KB) >= 0 && unitIndex < UNITS.length - 1) { + size = size.divide(KB, 2, RoundingMode.HALF_UP); unitIndex++; } - // 保留最多一位小数,去掉多余的 .0 - return String.format("%.1f", size).replace(".0", "") + UNITS[unitIndex]; + String num = size.stripTrailingZeros().toPlainString(); + return num + UNITS[unitIndex]; }