Я пытаюсь разобрать поплавок при использовании DecimalMormat twoDForm, чтобы уменьшить число десятичных знаков. Чтобы установить количество знаков после запятой я экземплярам следующим образом:DecimalFormat усиливает латинские номера, когда пользователи имеют разные локали
twoDForm = new DecimalFormat("#.##");
Затем разобрать поплавок я называю следующее:
Float.valueOf(twoDForm.format(cameraPosition.x)
, которые в некоторых случаях, казалось бы, на основе локали бросает
NumberFormatException: Invalid float: "١٥.٨٦" non latin numbers or font
У меня возникло несколько различных проблем с NumberFormatException из-за локалей и различий в том, как устройства Android обрабатывают номера и символы Л.С, поэтому я также добавил следующее к DecimalFormat:
DecimalFormatSymbols dfs = new DecimalFormatSymbols();
dfs.setDecimalSeparator('.');
dfs.setMinusSign('-');
twoDForm.setDecimalFormatSymbols(dfs);
Я был в состоянии решить те, которые включают некоторые случаи с использованием различных видов запятых, и знак минус, но теперь я столкнулся с this: java.lang.NumberFormatException: Invalid float: "15.86"
Когда я нахожусь в google, я нахожу арабские книги, поэтому я предполагаю, что это другой способ обработки чисел для разных языков. Есть ли способ заставить это использовать «обычные» номера, чтобы избежать этого, что позволило бы мне просто вызвать тот же Float.valueOf (...), не добавляя конкретные локали для каждого возможного случая?
Спасибо!
Что вы делаете с этим текстом, который дает исключение? Какую команду вы вызываете? –
Просто примечание в случае, если в вопросе неясно - эти символы являются арабскими цифрами. –
Является ли '.' регулярным периодом? –