public class NumFormatTest
{
public static void main(String[] args) throws ParseException
{
String num = "1 201";
DecimalFormat df = (DecimalFormat) NumberFormat.getNumberInstance(Locale.FRANCE);
System.out.println("Number Before parse: "+num);
double dm = df.parse(num).doubleValue();
System.out.println("Number After parse: "+dm);
}
}
Выход:Java Десятичный формат синтаксический вопрос
Number Before parse: 1 201
Number After parse: 1.0
Ожидаемый результат:
Number Before parse: 1 201
Number After parse: **1201**
Может ли пожалуйста, помогите мне понять, почему синтаксический анализ не в состоянии преобразовать ФРАНЦУЗСКИЙ локаль отформатированную строку (1 201) до нормального двойного значения (1201,0)?
Я заметил, что-то вроде этого Если я первый попытаться отформатировать двойной как этот г = 1201 Строка RetVal = df.format (д); затем попытайтесь проанализировать это отформатированное значение, которое будет retVal = 1 201 double val = df.parse (retVal) .doubleValue(); Это будет работать и увидит val = 1201.0 Но у меня уже есть строка в формате FRENCH (1 201), и прямой синтаксический анализ не работает. Не знаю, почему ... если вы поможете мне ответить на эту причину. –
Это может помочь: http://stackoverflow.com/a/8389625/3519951 –
@AmitNag взгляните на мой ответ ... Я объясняю, что такое поведение – ParkerHalo