以0.00格式将字节转换为MB

  • 本文关键字:转换 MB 字节 格式 c#
  • 更新时间 :
  • 英文 :


我创建了一个标题数据检索器,用户输入URL并以MB
返回大小我的代码正常工作,但没有显示浮动值

if (long.TryParse(resp.Headers.Get("Content-Length"), out ContentLength))
{
    string File_Size;
    if (ContentLength >= 1073741824)
    {
        result = ContentLength / 1073741824;
        kbmbgb.Text = "GB";
    }
    else if (ContentLength >= 1048576)
    {
        result = ContentLength / 1048576;
        kbmbgb.Text = "MB";
    }
    else if (ContentLength >= 1024)
    {
        result = ContentLength / 1024;
        kbmbgb.Text = "KB";
    }
    else
    {
        result = ContentLength;
        kbmbgb.Text = "BYTE";
    }
    File_Size = result.ToString("0.00");
    sizevaluelabel.Text = File_Size;
}

问题是您完全在不可提供十进制存储空间的整体类型中工作。您需要转换为双重或十进制。如果您使用的是C#7(支持元组(,则可以这样做:

public (double, string) AdjustFileSize(long fileSizeInBytes)
{
    var names = {"BYTES", "KB", "MB", "GB"};
    double sizeResult = fileSizeInBytes * 1.0;
    int nameIndex = 0;
    while (sizeResult > 1024 && nameIndex < names.Length)
    {
        sizeResult /= 1024; 
        nameIndex++;
    }
    return (sizeResult, names[nameIndex]);
}

这是另一种有趣的方法:

public (double, string) AdjustFileSize(long fileSizeInBytes)
{
    if (fileSizeInBytes <= 0) return (0.0, "BYTES");
    var names = {"BYTES", "KB", "MB", "GB"};
    var sizes = {1.0, 1024.0, 1048576.0, 1073741824.0};
    var index = Math.Log(fileSizeInBytes, 1024);
    return (fileSizeInBytes / sizes[index], names[index]);
}

然后调用任何一个版本:

long ContentLength = 0;
if (long.TryParse(resp.Headers.Get("Content-Length"), out ContentLength))
{
    var size = AdjustFileSize(ContentLength);
    sizevaluelabel.Text = size.Item1.ToString("0.00");
    kbmbgb.Text = size.Item2;
}

如果您不能使用元组,我将定义一个小课以传达相同的信息,甚至可以给定尺寸的结构。

上述大多数答案对初学者来说太难理解了,因此经过几次尝试,尝试了自己的方式。这是答案。

                double ContentLength = 0;
                double result;
                if (double.TryParse(resp.Headers.Get("Content-Length"), out ContentLength))
                {
                    string File_Size;
                    if (ContentLength >= 1073741824.00)
                    {
                        result = ContentLength / 1073741824.00;
                        kbmbgb.Text = "GB";
                    }
                    else if (ContentLength >= 1048576.00)
                    {
                        result = ContentLength / 1048576.00;
                        kbmbgb.Text = "MB";
                    }
                    else if (ContentLength >= 1024.00)
                    {
                        result = ContentLength / 1024.00;
                        kbmbgb.Text = "KB";
                    }
                    else
                    {
                        result = ContentLength;
                        kbmbgb.Text = "BYTE";
                    }
                    File_Size = result.ToString("0.00");
                    sizevaluelabel.Text = File_Size;

最新更新