0
我有一個醜陋的打印方法,需要一個長的正則表達式作爲一個字符串。必須有一個更簡單的解決方案。將大數十進制格式轉換爲美元形式的最佳方法是什麼?
// output is in dollars
String formatString = "%1$-20d%2$-20.2f%3$-20.2f%4$.2f,%5$.2f,%6$.2f\n";
printf(formatString, paymentNumber++, BigDecimal.ZERO, BigDecimal.ZERO,
(amountBorrowed.divide(new BigDecimal("100"))),
(totalPayments.divide(new BigDecimal("100"))),
(totalInterestPaid.divide(new BigDecimal("100"))));
數字格式是否會保持我的大十進制精度?下面是實際的printf方法。
private static void printf(String formatString, Object... args) {
try {
if (console != null) {
console.printf(formatString, args);
} else {
System.out.print(String.format(formatString, args));
}
} catch (IllegalFormatException e) {
System.out.print("Error printing...\n");
}
}
我知道這很可怕。任何人都想到更好的方法?
[getCurrencyInstance](http://docs.oracle.com/javase/7/docs/api/java/text/NumberFormat.html#getCurrencyInstance(java.util.Locale)) –
這將如何用於替換以上雖然? – user10297
(1)格式字符串不是「正則表達式」;正則表達式用於模式匹配。 (2)是的,這應該適用於'BigDecimal'。 (3)如果你有六個數字,你需要以六種不同的方式進行格式化,你將需要這樣的東西。你可以將它分成六個部分,每個部分調用'String.format',並連接結果,結果可能更清晰,更易讀,但我不會稱之爲「更簡單」。因人而異。我不太確定你的期望。 – ajb