Преобразование Long в число с плавающей запятой и целое число

У меня есть объект с некоторой статистикой процессора. Проблема в том, что те, что имеют тип long (я думаю)

Как я могу преобразовать это в полезные значения, такие как float и int?

Я пытался бросить его, но я получил

java.lang.ClassCastException: java.lang.Long нельзя преобразовать в java.lang.Float

введите здесь описание изображения

float value = (float) Docker.getStatistics("ENVX").getCpuStats().get("system_cpu_usage");

person sadas    schedule 03.01.2018    source источник
comment
Почему вы хотите преобразовать long (или Long) в float? Вы потеряете точность.   -  person Eran    schedule 03.01.2018
comment
longs, безусловно, являются полезными значениями. На самом деле в большинстве случаев полезнее, чем float.   -  person OH GOD SPIDERS    schedule 03.01.2018
comment
Из интереса, что не полезно в long?   -  person Bathsheba    schedule 03.01.2018
comment
Возможный дубликат Получить использование ЦП контейнера Docker в процентах   -  person OH GOD SPIDERS    schedule 03.01.2018
comment
Я имею в виду, что просто хотел показать фактические данные. Это API, и значения указаны в формате long. Я хочу показать проценты процессора   -  person sadas    schedule 03.01.2018


Ответы (1)


Я действительно не понимаю, почему вы хотите преобразовать 64-битное значение в 32-битное, рискуя потерять точность, но вы можете попробовать:

Long cpu = Docker.getStatistics("ENVX").getCpuStats().get("system_cpu_usage");
Float f = Float.valueOf(cpu.toString());
person Konstantin Yovkov    schedule 03.01.2018
comment
Я имею в виду. Я думаю, что это должен быть процент процессора. Я не могу использовать длинное значение. Мне нужно что-то вроде 0-100%. Может быть, мне следует преобразовать в двойной? - person sadas; 03.01.2018
comment
Тогда вам не нужны ни float, ни double, а простая математика. :) - person Konstantin Yovkov; 03.01.2018
comment
Может тогда я идиот. Я думал, что это уже должно было дать необработанные значения. - person sadas; 03.01.2018