У меня есть строковое значение, которое я хочу назначить BigDecimal. Когда я обновляю десятичное значение с номером типа 100.23
, он отлично работает, но когда я обновляю его числом, например 100,23
, код генерирует исключение. Почему это?
Java BigDecimal может иметь запятую вместо точки?
Ответ 1
потому что вы попытались поместить число "," в число.
вы можете использовать этот код для разбора числа с запятой:
NumberFormat.getNumberInstance(Locale.FRANCE).parse("265,858")
вы также должны использовать float или double, если нет определенной причины, по которой вы используете десятичную.
Ответ 2
Конструктор BigDecimal(String)
документация содержит список всех допустимых форматов и символов. Обратите внимание, что ,
не входит в этот список.
Ответ 3
Если вы не можете быть уверены, что ваша строка имеет запятые или точки, вы можете использовать replace(char, char)
из класса String. Например myString.replace(',', '.')
.