2015-02-04 5 views
1

Итак, я получаю сбой java.lang.NumberFormatException: Invalid float: "٠", потому что по некоторым причинам на египетских устройствах десятичный разделитель равен 0 вместо. Как это решить? Он может обрабатывать пользователей, которые имеют (запятую) в качестве десятичного символа, но эта странная точка вызывает сбой. Вот код, проблема:java.lang.NumberFormatException: Invalid float: «0»

DecimalFormat oneDigit = new DecimalFormat("#.#"); 
DecimalFormatSymbols dfs = new DecimalFormatSymbols(); 
dfs.setDecimalSeparator('.'); 
oneDigit.setDecimalFormatSymbols(dfs); 
sevenDaysAverage = Float.valueOf(oneDigit.format(sevenDaysAverage)); // exception here 

Моя цель состоит в том, чтобы иметь номер, отформатированный с одной десятичной разделителями точкой, потому что приложение на английском языке, и это, как должно быть отображено число.

+0

Я не уверен, что это десятичный разделитель. Когда я Google, я вижу, что это [арабский нуль] (http://en.wiktionary.org/wiki/%D9%A0). –

ответ

2
String f = "20.0"; // suppose . is weird symbol 
String f1 = f.replace(".","."); // replace weird dot with decimal point 

Затем конвертировать f1 в String.

sevenDaysAverage = Float.valueOf(f1); 
0

Вы должны использовать NumberFormat class.It позволяет разбирать строки в локали осознает число. Это позволит вам лицом ситуации, когда в качестве десятичного разделителя символ , Например, в случае немецкой было бы:

NumberFormat nf_ge = NumberFormat.getInstance(Locale.GERMAN); 

String number_ge = nf_ge.format(1000000); 
-1

Это арабский Ноль не десятичную точку,

0

Если вы хотите группирования сепаратора быть точками, вы можете использовать европейский языковой стандарт:

NumberFormat nf = NumberFormat.getNumberInstance(Locale.GERMAN); 
    DecimalFormat df = (DecimalFormat)nf; 

в качестве альтернативы вы можете использовать DecimalFormatSymbols класс для изменения символов, которые появляются в виде числа, полученные методом формата. Эти символы включают десятичный разделитель, разделитель группирования, знак минус и знак процента, среди других:

DecimalFormatSymbols otherSymbols = new DecimalFormatSymbols(currentLocale); 
    otherSymbols.setDecimalSeparator(','); 
    otherSymbols.setGroupingSeparator('.'); 
    DecimalFormat df = new DecimalFormat(formatString, otherSymbols); 
-1

Перед тем, как использовать значение «0» передать его в BigDecimal объект и использовать возвращаемое значение.

int value = Integer.valueOf(new BigDecimal("٠")); 
Смежные вопросы