2013-03-01 4 views
1

Я пытаюсь преобразовать входную строку в евро/болгарскую валюту, у меня два сценария.Проблемы с форматированием валют

Во-первых, Когда вход 10000 болгарский формат должен быть как 10 000 и формат евро должен быть 10,000

Во-вторых, если вход 10.23 тогда как европейские, так и болгарский формат должен быть 10,23. Я пытаюсь сделать с помощью Big Decimal, что-то вроде,

String s = "+000000055511.00"; 
     BigDecimal b = new BigDecimal(s.replace(",", ".")); 
     b.setScale(2, RoundingMode.HALF_UP); 
     System.out.println(b.toPlainString()); 

Но я не в состоянии сделать это в качестве общей полезности, которая принимает и преобразует в евро или болгарский currency.Is там любую утилиту для того же самого? Может кто-нибудь мне помочь?

+0

Вы пробовали использовать NumberFormat.getCurrencyInstance()? – user902383

ответ

2

Вы можете использовать java.text.NumberFormat.getCurrencyInstance(Locale) с соответствующими местными жителями. Если таких местных жителей нет, которые соответствуют вашим требованиям, тогда создайте свой собственный десятичный форматировщик java.text.DecimalFormat с рисунком ##' '##0.00 соответственно. ##,##0.00 плюс соответствующий знак валюты. Верстальщик может быть применен к BigDecimal:

String s = "+000000027511.00"; 
BigDecimal B = new BigDecimal(s); 
// don't replace "." by ",": english number format expected here 
b.setScale(2, RoundingMode.HALF_UP); 

NumberFormat f = new DecimalFormat(...); //initialize as requested see docs 
System.out.println(f.format(b)); 

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

Надеюсь, это поможет.

+0

FYI: реализация Oracle 7 Java [поддерживает] (http://www.oracle.com/technetwork/java/javase/javase7locales-334809.html) 'bg_BG' для' java.util' и 'java.text'. – McDowell

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