У меня есть уродливый метод печати, который принимает длинное регулярное выражение как String. Должно быть более простое решение.Каков наилучший способ форматирования большого десятичного знака в форму доллара?
// 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"))));
Является ли формат числа, который будет поддерживать мою точность в формате Big Decimal? Фактический метод 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» на каждом из них и объединить результаты, и результат может быть более чистым и более читаемым, но я бы не назвал его «более простым». YMMV. Я не совсем уверен, на что вы надеетесь. – ajb