Игра с длиной чисел

В текстовом представлении моего recycerview у меня есть числа вроде 2557.1564987892, 0.0015468648, 26.2648597816. поэтому я хочу, чтобы если перед точкой было 4 числа, отображались только 2 числа после точки. если перед точкой стоит 1 цифра, отобразите 5 цифр после точки. если перед точкой стоит 2 цифры, отобразите 4 цифры после точки. Таким образом, все они имеют общую длину 6 штук. Спасибо.

Есть разные способы добиться того же. Способ реализации зависит от того, в каком формате вы будете использовать эти значения? Как струны или как числа с плавающей запятой / удвоением? Возможно оба типа? В обоих значениях типа есть способ реализовать решение.

SebasSBM 18.12.2018 02:18

Я не буду делать никаких операций со значениями, просто для отображения значений, поступающих из api. Я не могу определить его в своем классе модели ни String, ни float / double для решения.

Falcon 18.12.2018 02:29

Вы, кажется, не учитываете возможность чисел с отрицательным знаком. Имейте это в виду, если необходимо.

lionscribe 18.12.2018 06:24

Все числа больше 0. Но спасибо.

Falcon 18.12.2018 06:45
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
43
2

Ответы 2

Вы можете попробовать что-то вроде этого:

private static String fmtFixed(float value, int digits) {
    StringBuilder pattern = new StringBuilder("0.");
    float v = value;
    while (v >= 1) {
        digits--;
        v /= 10;
    }
    if (value < 1) {
        digits--;
    }
    while (digits > 0) {
        digits--;
        pattern.append("0");
    }
    return new DecimalFormat(pattern.toString()).format(value);
}

Для использования вы бы назвали это так:

textView.setText(fmtFixed(2557.1564987892, 6));

Простой способ в строковом формате:

String truncateNumber(String input_num) {
    output = input_num.substring(0, 7);
    return output;
}

// Function usage
truncated_number = truncateNumber(any_number_as_string);

Метод Substring возвращает подстроку из исходной строки с указанием начальной и конечной позиций.

Это работает, но последняя цифра не округляется, а только обрезается. Это может быть достаточно для пользователя, но округление, вероятно, лучше, но потребует дополнительной работы.

lionscribe 18.12.2018 06:26

Другие вопросы по теме