Этот пост действительно помог мне наконец получить то, что я хочу.Поэтому я просто хотел поделиться своим кодом здесь, чтобы помочь другим.Вот мой код с некоторыми пояснениями.
Следующий код:
double moneyWithDecimals = 5.50;
double moneyNoDecimals = 5.00;
System.out.println(jeroensFormat(moneyWithDecimals));
System.out.println(jeroensFormat(moneyNoDecimals));
Вернет:
€ 5,-
€ 5,50
Фактический метод jeroensFormat ():
public String jeroensFormat(double money)//Wants to receive value of type double
{
NumberFormat dutchFormat = NumberFormat.getCurrencyInstance();
money = money;
String twoDecimals = dutchFormat.format(money); //Format to string
if(tweeDecimalen.matches(".*[.]...[,]00$")){
String zeroDecimals = twoDecimals.substring(0, twoDecimals.length() -3);
return zeroDecimals;
}
if(twoDecimals.endsWith(",00")){
String zeroDecimals = String.format("€ %.0f,-", money);
return zeroDecimals; //Return with ,00 replaced to ,-
}
else{ //If endsWith != ,00 the actual twoDecimals string can be returned
return twoDecimals;
}
}
Метод displayJeroensFormat, вызывающий метод jeroensFormat ()
public void displayJeroensFormat()//@parameter double:
{
System.out.println(jeroensFormat(10.5)); //Example for two decimals
System.out.println(jeroensFormat(10.95)); //Example for two decimals
System.out.println(jeroensFormat(10.00)); //Example for zero decimals
System.out.println(jeroensFormat(100.000)); //Example for zero decimals
}
Будет иметь следующий вывод:
€ 10,50
€ 10,95
€ 10,-
€ 100.000 (In Holland numbers bigger than € 999,- and wit no decimals don't have ,-)
Этот код использует вашу текущую валюту.В моем случае это Голландия, так что форматированная строка для меня будет отличаться от той, что в США.
- Голландия: 999,999,99
- США: 999 999,99
Просто посмотрите последние 3 символа этих чисел.В моем коде есть оператор if, чтобы проверить, равны ли последние 3 символа значению ", 00".Чтобы использовать это в США, вам, возможно, придется изменить это значение на «.00», если оно уже не работает.