Отформатируйте десятичное число в (###, ###. ##), используя Blackberry Java API - PullRequest
4 голосов
/ 29 января 2011

Я пытаюсь сделать довольно простую вещь, используя Blackberry RIM API - у меня есть строка 1000000, которую я хочу отформатировать в 1,000,000.00

Я попробовал два класса RIM API, чтобы сделать это, но ни один из них не сделал то, что мне действительно нужно:

1) javax.microedition.global.Formatter

String value = "1000000";  
float floatValue = Float.parseFloat(value);  
Formatter f = new Formatter(); //also tried with locale specified - Formatter("en")  
String result = f.formatNumber(floatValue, 2);

Переменная результата 1000000.00 - у нее есть десятичный разделитель, но отсутствуют разделители групп (запятые).

2) net.rim.device.api.i18n.MessageFormat (заявляет о совместимости с java.text.MessageFormat в стандартной версии Java)

 String value = "1000000";  
 Object[] objs = {value};  
 MessageFormat mfPlain = new MessageFormat("{0}");  
 MessageFormat mfWithFormat = new MessageFormat("{0,number,###,###.##}");  
 String result1 = mfPlain.format(objs);  
 String result2 = mfWithFormat.format(objs);  

result1: (когда код mfWithFormat закомментирован) дает мне просто 1000000 (как и ожидалось, но бесполезно). результат2: выбрасывает IllegalArgumentException.

На данный момент у меня нет выбора, что попробовать дальше ...

Есть предложения?

Ответы [ 3 ]

3 голосов
/ 01 февраля 2011
0 голосов
/ 08 декабря 2011

Это работает без необходимости создания собственной функции:

String value = "1000000";

MessageFormat msgFormat = new MessageFormat("{0,number,###,###.00}");
String s = msgFormat.format(new Object[]{Integer.valueOf(value)}));

Убедитесь, что вы передаете целочисленный тип вместо строки, в противном случае вы получите: java.lang.IllegalArgumentException: Невозможно отформатировать данный объекткак число

0 голосов
/ 31 января 2011

Уверен, вам придется написать свои собственные функции, чтобы сделать это.

...