Не могу получить точный размер файла - PullRequest
1 голос
/ 30 января 2011

Вот как я пытаюсь получить размер файла в МБ:

    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, что я делаю не так?

Ответы [ 2 ]

6 голосов
/ 30 января 2011

Это целочисленное деление. Преврати его в деление с плавающей запятой, сделав хотя бы один из операндов числом с плавающей запятой:

 double friendly_file_size = file_size.Length / 1048576.0;

или

 double friendly_file_size = (double)file_size.Length / 1048576;
5 голосов
/ 30 января 2011

Поскольку ваш знаменатель является целым числом, я подозреваю, что приведение вызывает целочисленное деление. Решение простое. Просто приведите знаменатель к двойному. Как это:

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