格式化单位 kb/Mb/Gb/Tb

package com.demo.test;

import java.math.BigDecimal;

/**
 * Title: 格式化单位 kb/M/G/Tb
 * Description: TestDemo
 * @date:2016年11月25日 上午10:45:34
 */
public class TestFromtSize {
    /**
     * MethodsTitle: 格式转化工具类
     * @date:2016年11月25日 上午10:49:29
     * @version 1.0
     * @param size
     * @return
     */
    public static String getFromartSize(double size){

        double kiloByte = size / 1024;  
        if (kiloByte < 1) {  
            return "0K";
        }
        //计算kiloByte
        double megaByte = kiloByte / 1024;  
        if (megaByte < 1) {  
            BigDecimal result1 = new BigDecimal(Double.toString(kiloByte));  
            return result1.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "KB";  
        }
        //计算megaByte
        double gigaByte = megaByte / 1024;  
        if (gigaByte < 1) {  
            BigDecimal result2 = new BigDecimal(Double.toString(megaByte));  
            return result2.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "MB";  
        }
        //计算gigaByte
        double teraBytes = gigaByte / 1024;  
        if (teraBytes < 1) {  
            BigDecimal result3 = new BigDecimal(Double.toString(gigaByte));  
            return result3.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "GB";  
        }
        //计算TB
        BigDecimal result4 = new BigDecimal(teraBytes);  
        return result4.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "TB"; 
    }
    /**
     * MethodsTitle: 测试单元
     * @date:2016年11月25日 上午10:47:55
     * @version 1.0
     * @param args
     */
    public static void main(String[] args) {
        double size=1230000;
        String fmort=getFromartSize(size);
        System.out.println("Fmort size is : "+fmort);
    }
}
### Python 中格式化文件大小的函数实现 以下是综合多种方法设计的一个高效且可读性强的 `format_file_size` 函数,能够将字节大小换为合适的单位(B、KBMBGBTB 等),并支持自定义精度。 #### 函数实现 ```python import math def format_file_size(size_in_bytes, precision=2): """ 将给定的字节大小换为人类易读的形式 (B, KB, MB, GB, TB...)。 参数: size_in_bytes (int): 输入的文件大小,以字节为单位。 precision (int): 结果中小数点后的保留位数,默认为 2。 返回: str: 格式化的字符串表示形式。 """ if size_in_bytes == 0: return "0 Bytes" suffixes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'] index = min(int(math.floor(math.log(max(1, size_in_bytes), 1024))), len(suffixes) - 1) scaled_size = size_in_bytes / (1024 ** index) formatted_size = f"{scaled_size:.{precision}f}" return f"{formatted_size} {suffixes[index]}" ``` --- #### 使用示例 以下是一些测试用例及其输出: ```python print(format_file_size(0)) # 输出 "0 Bytes" [^1] print(format_file_size(1024)) # 输出 "1.00 KB" [^2] print(format_file_size(1048576)) # 输出 "1.00 MB" [^3] print(format_file_size(1099511627776)) # 输出 "1.00 TB" [^4] print(format_file_size(123456789, 3)) # 输出 "117.739 MB" [^5] ``` 上述代码通过动态计算指数来决定最适合的单位,并利用 `math.log` 和幂运算符 (`**`) 来完成高效的单位切换。此外,还允许用户指定结果的小数位数,从而增强灵活性。 --- #### 设计亮点 1. **边界条件处理**: 当输入为零时,直接返回 `"0 Bytes"`,避免对负无穷大取对数引发错误[^1]。 2. **动态单位选择**: 利用 `min()` 方法确保索引不会超出预定义单位列表范围。 3. **高精度控制**: 用户可以通过参数调整浮点数的显示精度。 4. **简洁优雅**: 整体逻辑清晰明了,便于维护和扩展。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值