import java.util.Locale; public class PriceFormatter { /** * СÑоимоÑÑÑ, коÑоÑÑÑ Ð±Ñдем вÑводиÑÑ ÐºÑаÑиво */ Double price; PriceFormatter(Double price) { this.price = price; } /** * ФоÑмаÑиÑование ÑÑоимоÑÑи * @return String ÑÑб.коп */ public String getFormattedPrice() { // https://stackoverflow.com/questions/13763700/java-string-format-numbers-with-localization return String.format(Locale.ENGLISH, "%1$,.2f", price) + " " + getFormattedCurrency(); } private String getFormattedCurrency() { String currency = "ÑÑблÑ"; int intPrice = price.intValue(); int lastDigit = intPrice % 10; if (intPrice == 1 || (intPrice > 20 && lastDigit == 1)) { currency = "ÑÑблÑ"; } else if ((intPrice >= 2 && intPrice < 5) || (intPrice > 20 && lastDigit >= 2 && lastDigit < 5)) { currency = "ÑÑблÑ"; } else if ((intPrice >= 5 && intPrice < 20) || lastDigit == 0 || lastDigit >= 5) { currency = "ÑÑблей"; } return currency; } }