Я делаю локализацию в своем приложении с персидским (locale-"fa") и пушту (locale-"ps") языками. Когда я пытаюсь преобразовать двойное значение в BigDecimal с помощью Decimal Foramt, он дает NumberFormatException в 4.0.3 с персидский язык.
Ниже приведен мой код для получения двух знаков после запятой:
public static String roundTwoDecimals(double d) {
System.out.println("===================Amount in double "+d);
DecimalFormat twoDForm = new DecimalFormat("#############.##");
String format=twoDForm.format(d);
System.out.println("===================Amount after formatting "+format);
return new BigDecimal(twoDForm.format(d)).toPlainString();
}
Логкат:
03-26 15:19:29.714: I/System.out(1475): ===================Amount in double 166308.37
03-26 15:19:29.723: I/System.out(1475): ===================Amount after formatting ۱۶۶۳۰۸٫۳۷
Фактическая сумма составляет 166308,37, и когда я меняю язык на персидский ("fa") и форматирую его, он дает сумму, подобную ۱۶۶۳۰۸٫۳۷
в 4.0.3. Таким образом, эта строка не может быть преобразована в BigDecimal
и дает NumberFormatException
.
И странная проблема в том, что кроме 4.0.3 она прекрасно работает.
.
меняется на,
на некоторых языках. Вам нужно позаботиться об этом. - person Lucifer   schedule 26.03.2014