дисплей плавает с точностью до 3 - PullRequest
0 голосов
/ 27 апреля 2011

Я боролся с этой проблемой некоторое время. У меня есть номера, которые отображаются в TextView. В этом текстовом обзоре я бы хотел, чтобы плавающий элемент отображался с точностью до 3, так как есть место только для 3 чисел. Вот несколько примеров того, что я пытаюсь достичь:

1       -> 1.00
0.34   -> 0.34
-12.34  -> -12.3
123.45  -> 123

Ввод всегда будет округляться до ближайшей сотой. Я пытался использовать String.format и даже сделать собственный формат. В настоящее время у меня есть логика, чтобы выяснить форматирование, но должен быть один вкладыш:

    float abs_d = Math.abs(my_float);

    String dist = "";
    if (abs_d < 10) {
        dist = String.format("%1.2f", d);
    }
    else if (abs_d < 100) {
        dist = String.format("%2.1f", d);
    }
    else {
        dist = String.format("%3.f",d);
    }
    my_text_view.setText(dist);

Возможно, есть хитрый способ сделать это с помощью TextView? Вы можете указать ширину пикселя, но как насчет ширины символа (но даже тогда, я бы принял отрицательный знак)? Я полагаю, что для этого должна быть какая-то библиотека Java.

Ответы [ 3 ]

2 голосов
/ 27 апреля 2011

Я так понимаю, вы пробовали что-то вроде использования DecimalFormat ?

0 голосов
/ 27 апреля 2011

@ ikegami @ Джек, спасибо за беседу и предложения. Кажется, это дает функциональность, которую я ищу:

    String str = "999";
    DecimalFormat f = null;
    if (abs_d < 1000) {
        if (abs_d < 1) {
            f = new DecimalFormat("@@");
            str = f.format(d);
        }
        else {
            f = new DecimalFormat("@@@");
            str = f.format(d);
        }
    }

    my_text_view.setText(str);
0 голосов
/ 27 апреля 2011

Конечно, есть один вкладыш.Поместите логику в функцию с именем format_float и используйте

my_text_view.setText(format_float(my_float));
...