2016-02-11 3 views
1

У меня есть вопрос относительно форматирования в android, у меня есть следующий код, который форматирует двойной номер, чтобы иметь только 2-мерную точность, код хорошо работает, когда язык устройства Android является английским, когда я его меняю, например на арабском языке авария приложения в последней строке. когда я отлажена в обоих случаях (En - арабский) Я обнаружил, что двойное значение, передаваемое функции такой же пример: 1,2040Двойной номер Android, создающий проблему

public static Double getRoundedStringValueTo2Precisions(double value){ 
    // TODO: check how we can parse the values where the decimal separator is comma() 
    DecimalFormat df = new DecimalFormat("#0.##"); 
    return Double.valueOf(df.format(value)); 
} 
+0

'DecimalFormat ("# 0,00");' .. – Satya

+0

@Satya если это ответ представить его как единое целое. Очень хотелось бы, чтобы дать upvotes если правильно :) –

+0

Ответ не работал, я до сих пор получаю следующее сообщение об ошибке: 02-11 14: 16: 19,375 6572-6572 AndroidRuntime: НЕУСТРАНИМОГО ИСКЛЮЧЕНИЕ: главный java.lang.NumberFormatException : Недопустимый double: «0. 00» – molwiko

ответ

0

Попробуйте с x = Math.round(x * 100.00)/100.00

И не forhet разобрать

double y = Double.parseDouble(z.getText().toString()); 
+0

Извините, но мне нужно использовать класс DecimalFormat. почему я получил эту проблему, когда меняю язык на арабский.? – molwiko

+0

Вы также можете скопировать код английского файла? – DaxHR

+0

Что значит код английского файла? функция, о которой я упоминаю выше, это отличное от приложения приложение, которое хорошо работает, когда язык устройства Android является английским, когда я меняю язык устройства Android на арабский, а затем сбой приложения в этой строке -> Double.valueOf (df.format (value)); Журнал сбоев: java.lang.NumberFormatException: Недопустимый двойной: «0. 00» java.lang.StringToReal.invalidReal (StringToReal.java:63) java.lang.StringToReal.parseDouble (StringToReal.java:269) java.lang .Double.parseDouble (Double.java:295) – molwiko

0

Я исправил проблему, теперь она работает, когда я меняю языковое устройство. вот исправление

NumberFormat nf = NumberFormat.getNumberInstance(Locale.ENGLISH); 
DecimalFormat df = (DecimalFormat)nf; 
df.applyPattern("#0.##"); 
String ss = df.format(value); 
return Double.valueOf(ss); 
Смежные вопросы