Форматирование чисел с плавающей запятой в Android Java

Я хочу отформатировать число с плавающей запятой в строку по следующему шаблону

X.XX -> когда есть только 1 цифра перед десятичной точкой, тогда 2 десятичная точность

XX.XX -> когда есть 2 цифры перед десятичной точкой, тогда 2 десятичная точность

XXX.X -> когда есть 3 цифры до десятичной точки, тогда 1 десятичная точность

XXXX.. -> когда перед десятичным числом 4 или более цифр, десятичные точки не должны отображаться

Как это сделать в Java?


person vipin agrahari    schedule 01.12.2015    source источник
comment
Что вы пробовали для этого?   -  person Nigam Patro    schedule 01.12.2015
comment
Это твоя домашняя работа? потому что я не вижу, что вы пробовали   -  person Iamat8    schedule 01.12.2015
comment
в чем проблема?   -  person Prince    schedule 01.12.2015
comment
@Mohit Это не домашнее задание. Я прочитал DecimalFormat и StringFormat Documentation of java, но я не могу решить, как мне их отформатировать, чтобы получить указанное выше поведение. Как и в последнем случае, я не хочу показывать десятичные значения. Как добиться этого случая   -  person vipin agrahari    schedule 01.12.2015
comment
Вы смотрели на DecimalFormat   -  person Dillon Ryan Redding    schedule 01.12.2015
comment
@DillonRyanRedding .. Да, я читал это. Но я не могу использовать это, чтобы полностью выполнить мое требование. Любая помощь приветствуется.   -  person vipin agrahari    schedule 01.12.2015


Ответы (2)


Простой код, использующий десятичный формат, может быть полезен.

float f=  24.56f;//Replace with your float number
    int i = (int)f;
    if(i<100)
        System.out.println(new DecimalFormat("#.##").format(f));//This functions will round the last bits also i.e. greater then 4 will increase the number preceding also 
    else if( i < 1000)
        System.out.println(new DecimalFormat("#.#").format(f));
    else 
        System.out.println(new DecimalFormat("#").format(f));
person dbw    schedule 01.12.2015

Предположим, у вас есть число с плавающей запятой f

float f;
int a = (int) f;
String res = null;
if (a<100) res = String.format("%.2f");
else if (a<1000) res = String.format("%.1f");
else res = String.valueOf(a);
person Mirjalol Bahodirov    schedule 01.12.2015