#java #numbers
#java #числа
Вопрос:
Я загружаю файлы разных размеров и хотел бы
показать удобный для пользователя вывод относительно размера файла.
Я пробовал это:
double line= (totalBytes/(1024*1024));
DecimalFormat dec = new DecimalFormat("0.00");
String result = dec.format(line);
result = result.concat("MB");
Это работает только при размере около одного МБ. Если размер равен 1200000 байт, я получаю «1,2 МБ».
Но как сделать это динамическим, если допустим, размер файла равен 46 байтам.
ОБНОВИТЕ, как отобразить размер в 46 байт, например, 0,000046 МБ или 500 КБ, например, 0,5 МБ.
Это должно быть сделано на лету. Я хочу, чтобы удобный для пользователя вывод всегда показывал X.XMB
независимо от того, сколько байт.
Комментарии:
1. Кстати,
(totalBytes/(1024*1024))
выполняет деление на основе целых чисел. ПопробуйтеtotalBytes/(double)(1024*1024))
получить результат с плавающей запятой.
Ответ №1:
Простейшим решением является проверка того, является ли число больше / меньше множителя, и применение деления соответственно.
Итак
if (totalBytes < 1024){
//bytes
}else if (totalBytes < 1024*1024){
//kilobytes
} //etc
Комментарии:
1. да, это то, чего я хочу. но как отобразить размер в 46 байт, например, 0,000046 МБ или 500 КБ, например, 0,5 МБ. Я обновляю свой вопрос, это была заработная плата
2. (double) totalBytes / (double)(1024 * 1024) Но затем не форматируйте десятичную дробь как 0.00. Если только вы не собираетесь заканчивать это. Но я вряд ли думаю, что 0,000046 МБ — это «удобный для пользователя вывод»
Ответ №2:
Конечно, вам понадобится
double line= ((double)totalBytes/(1024*1024));
Комментарии:
1. Спасибо. кстати, я обновляю вопрос, поскольку было трудно точно определить, что мне нужно.