2014-03-19 33 views

回答

5

這也許是更優雅你

StringBuilder sb = new StringBuilder("8890"); 
sb.insert(2, ','); 
System.out.println(sb); 
0

s = String.format("%s,%s", s.substring(0, 2), s.substring(2));

+0

我改變了我的代碼... – d3vnico

1

貌似你試圖格式化十進制數,爲什麼不這樣做呢?

public static void main(String[] args) throws Exception { 
    final String s = "8890"; 
    final BigDecimal dec = new BigDecimal(s).divide(BigDecimal.valueOf(100)); 
    final String formatted = new DecimalFormat("0.00", DecimalFormatSymbols.getInstance(Locale.FRENCH)).format(dec); 
    System.out.println(formatted); 
} 

只需選擇一個Locale其中小數點分隔符是你想要的 - 我選擇了French

輸出:

88,90 

替代地設置在默認實例setMinimumFractionDigits

final NumberFormat format = NumberFormat.getInstance(Locale.FRENCH); 
format.setMinimumFractionDigits(2); 
final String formatted = format.format(dec); 

結果是相同的。

編輯

OP的評論這€泌尿格式。在這種情況下,有一個現有的格式化工具正是這麼做的:

public static void main(String[] args) throws Exception { 
    final String s = "8890"; 
    final BigDecimal dec = new BigDecimal(s).divide(BigDecimal.valueOf(100)); 
    final String formatted = DecimalFormat.getCurrencyInstance(Locale.FRANCE).format(dec); 
    System.out.println(formatted); 
} 

將輸出:

88,90 € 

採摘,他們使用的領先€,如意大利的國家,將導致:

€ 88,90 
+0

+1使用正確的工具,說明代碼是準備做什麼。 – Pshemo

+0

這是歐式格式 – d3vnico

相關問題