优秀的编程知识分享平台

网站首页 > 技术文章 正文

C#将文件大小转换整理成几G几M几K的形式

nanyue 2024-10-11 13:35:18 技术文章 6 ℃

得到了一个下载文件的大小,但数值太长了,不直观,用户看了一脸懵,写一个函数根据它的大小转成GMK形式

public class Change
{
    #region double类型值转成G\M或者K 如1000 返回 1M
    public string Byte2K(double ByteCount, string Kstr, int Kxiaoshuwei)
    {
        double K = ByteCount / 1024;
        return K.ToString("f" + Kxiaoshuwei) + Kstr;
    }
    public string Byte2M(double ByteCount, string Mstr, int Mxiaoshuwei)
    {
        double M = ByteCount / 1024 / 1024;
        return M.ToString("f" + Mxiaoshuwei) + Mstr;
    }
    public string Byte2G(double ByteCount, string Gstr, int Gxiaoshuwei)
    {
        double G = ByteCount / 1024 / 1024 / 1024;
        return G.ToString("f" + Gxiaoshuwei) + Gstr;
    }
    /// <summary>
    /// 输入一个double数字自动根据大小返回单位    如 1000200000 ,返回 1.2G
    /// <para>double a=1000200000;</para>
    /// <para>Byte2KMG(a, "G/s", 2, "M/s", 3, "K/s", 0)</para>
    /// <para>返回 1.20G/s ,因为第3个参数为2 ,所以单位为"G"时小数位数为2</para>
    /// <para>根据获得单位不同,匹配不同小数点位数</para>
    /// </summary>
    /// <param name="ByteCount">数字大小</param>
    /// <param name="Gstr">过G时显示的字符</param>
    /// <param name="Gxiaoshuwei">G单位保留的小数位</param>
    /// <param name="Mstr">过M时显示的字符</param>
    /// <param name="Mxiaoshuwei">M单位保留的小数位</param>
    /// <param name="Kstr">这K时显示的字符</param>
    /// <param name="Kxiaoshuwei">K单位保留的小数位</param>
    /// <returns>返回结果</returns>
    public string Byte2KMG(double ByteCount, string Gstr, int Gxiaoshuwei, string Mstr, int Mxiaoshuwei, string Kstr, int Kxiaoshuwei)
    {
        double K = ByteCount / 1024;
        double M = K / 1024;
        double G = M / 1024;

        if (G > 1)
        {
            return G.ToString("f" + Gxiaoshuwei) + Gstr;
        }
        else if (M > 1)
        {
            return M.ToString("f" + Mxiaoshuwei) + Mstr;
        }
        else
        {
            return K.ToString("f" + Kxiaoshuwei) + Kstr;
        }
    }
    #endregion
}

用法

double a=1000200000;

Change.Byte2KMG(a, "G/s", 2, "M/s", 3, "K/s", 0)

返回结果为 1.20G/s

因为第3个参数为2 ,所以单位为"G"时小数位数为2

最近发表
标签列表