Ввод: плавающая или двойная сумма.
Вывод: число или строка в формате валюты США.
В настоящее время я использую DecimalFormater для преобразования float или double. Результатом является сумма в строковом формате.
Для форматирования в американском денежном формате Am используется NumberFormat.getInstance (Locale.US) .format (- Input Value--). Но принимаемое входное значение - это только числовой стиль данных, а не строковый тип данных.
Таким образом, ввод от DecimalFormater нельзя использовать в качестве ввода для NumberFormat
Пробовал использовать класс Wrapper для преобразования строки в определенный числовой тип. Но округление до двух десятичных знаков не работает в исключительных случаях.
Метод преобразования двойного значения в строку и двойного в американский формат
public static string doubleInTwoDecimalPoint(double value) {
DecimalFormat df = new DecimalFormat("####0.00");
String doubleInStringRep = df.format(value);
return doubleInStringRep;
}
public static void convertToUSFormat(double amount) {
System.out.println(NumberFormat.getInstance(Locale.US).format(amount));
}@Mureinik Обновлено с кодом
Вы просто хотите, чтобы число float / double было округлено до двух цифр?
Вероятно, вам нужен NumberFormat.getCurrencyInstance, а не NumberFormat.getInstance.
Необходимо округлить число с плавающей запятой / число до двух десятичных знаков. Но NumberFormat.getCurrencyInstance или NumberFormat.getInstance требует, чтобы значение было в числовом значении для формата.




Вам нужно использовать NumberFormat :: getCurrencyInstance, который будет форматировать Locale, который вы ему передадите.
System.out.println(NumberFormat.getCurrencyInstance(Locale.US).format(amount));
Пример:
Вход:
123.4567
Выход:
$123.46
Спасибо. Но что делать, если входное значение (количество) представляет собой строку, а не числовой тип.
Если введен String, измените строку на: System.out.println(NumberFormat.getCurrencyInstance(Locale.US).format(Double.valueOf(amount))); .
Используя System.out.println (NumberFormat.getCurrencyInstance (Locale.U S) .format (Double.val ueOf (amount))). Я получаю ошибку как java.lang.IllegalArgumentException
@NandakumarKadavannoore Я не уверен, как вы его используете, но посмотрите здесь: ideone.com/PJzz19
Пожалуйста, поделитесь своим текущим кодом, без него сложно понять вопрос.