【问题标题】:Can't get accurate file size无法获得准确的文件大小
【发布时间】:2011-01-30 05:30:26
【问题描述】:

这是我尝试以 MB 为单位获取文件大小的方式:

    FileInfo file_size = new FileInfo(list[i]);
    double friendly_file_size = (file_size.Length / 1048576);
    MessageBox.Show(friendly_file_size.ToString());

问题是逗号后没有显示任何内容。当文件大小为 3.15 时,显示为 3。当文件大小为 0.5 时,显示为 0,我做错了什么?

【问题讨论】:

    标签: c# .net filesize fileinfo


    【解决方案1】:

    这是一个整数除法。通过将至少一个操作数设为浮点数,将其变为浮点除法:

     double friendly_file_size = file_size.Length / 1048576.0;
    

    或:

     double friendly_file_size = (double)file_size.Length / 1048576;
    

    【讨论】:

    • 或者,您可以使用数字后缀(即 1048576d)。不过,如果您想使用小数类型,它最有用,在这种情况下,这不是必需的。
    • 非常感谢您向我解释这一点。
    • @Thorarin:我不知道d 是十进制,我的印象是that m was
    • @Brad: ddouble; mdecimal(钱)——然而,在一般英语用法中,double 值代表十进制数字,所以 Thorarin 并没有完全错。
    • @Gabe:弗洛伊德式的失误是我的一部分,引用了该页面,但仍然在评论中颠倒了它们(必须是睡觉时间)。
    【解决方案2】:

    由于您的分母是整数,我怀疑强制转换会强制整数除法。解决方案很简单。只需将分母转换为双倍。像这样:

    double friendly_file_size = file_size.Length / (double)1048576;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多