Конвертировать из Long в число с плавающей точкой - PullRequest
0 голосов
/ 06 ноября 2011

В моем классе есть атрибут, fileSize Тип: long

Я не хочу переходить в число с плавающей запятой / double, потому что я работаю сбазы данных, и теперь я не могу просто отредактировать типы данных (до конца)

размер файла обычно составляет кБ (причина, по которой long ) .. Но как только я хочучтобы показать его в МБ (это было бы, fileSize / 1024 ) -> и я получаю 0 , потому что тип не является float/double..

Как я могу решить эту проблему, чтобы получить 0,54 МБ bE без изменения типа данных fileSize ?

Ответы [ 5 ]

6 голосов
/ 06 ноября 2011

fileSize / 1024 выполняет целочисленное деление, поскольку оба операнда являются целыми числами. Если вы хотите выполнить реальное деление, вы можете сделать это (хотя бы один из операндов должен быть действительным числом):

double result = fileSize / 1024.0;

или

double result = fileSize / 1024d;

Теперь результат будет содержать правильное значение, которое вы хотите напечатать в пользовательском интерфейсе.

1 голос
/ 06 ноября 2011

вы можете сделать

  double a = fileSize / 1024d; 
1 голос
/ 06 ноября 2011

Разделите на 1024.0 и компилятор преобразует его в double.

1 голос
/ 06 ноября 2011
1 голос
/ 06 ноября 2011

Просто сделай

double sizeMiB = fileSize / 1024.0

Или

string toDisplay = string.Format("Size is {0}MiB", fileSize/1024.0);
...