2013-05-21 6 views
0

Я использую

public static String displayNumberAmount(Number amount, Locale locale) { 
    String.format(locale, "%1$,.2f", amount); 
} 

форматировать мои номера в локали и 2 знаков после запятой.

Если я номер 1032 будет правильно отформатирован в 1 032,00 НО, если у меня есть несколько ниже, чем 1000, например 890, то он будет отформатирован как 890 (и мне нужно эти 2 знаков после запятой всегда)

в объекте, эти значения сохраняются как BigDecimals, как

BigDecimal val = object.getAmount(); 
String formattedVal = displayNumberAmount(val, myLocale); 

Можете ли вы сказать мне, почему?

+1

Я не могу воспроизвести это. Можете ли вы указать точный код (тот, который вы показываете, не использует возвращаемое значение) и языковой стандарт? –

+0

my BigDecimal val - 932. Мой язык - французский. – gospodin

+0

Ну, я просто попробовал 'Number amount = new BigDecimal (832); System.out.println (String.format (Locale.FRENCH,"% 1 $ ,. 2f ", amount));'. Используете ли вы возврат 'format'? –

ответ

0

Ваш код отлично подходит для меня. Это мой тест:

import java.math.BigDecimal; 
import java.util.Locale; 

public class Tester{ 
    public static void main(String args[]){ 
     System.out.println("999 " + displayNumberAmount(new BigDecimal(999.99), Locale.FRENCH)); 
     System.out.println("1000 " + displayNumberAmount(new BigDecimal(1000.99), Locale.FRENCH)); 
     System.out.println("1001 " + displayNumberAmount(new BigDecimal(1001.99), Locale.FRENCH)); 
    } 

    public static String displayNumberAmount(Number amount, Locale locale) { 
     return String.format(locale, "%1$,.2f", amount); 
    } 

} 
-1
public static String displayNumberAmount(Number amount, Locale locale) { 
    return String.format(locale, "%1$,.2f", amount); 
} 

'возвращение' заявление отсутствует.

+0

Я указал, что в комментариях, но это не объяснение проблемы OP. –

Смежные вопросы