Android. Заметки #1. Отображение числа в формате 13,000,000

Автор:

Возникла необходимость разделить число запятыми, в формате 1,000; 16,000; 123,000 для импрува UI приложения. Кажется ничего сложного…но на разных производителях телефонов (Xiaomi, Nokia, Samsung, General Mobile), логика форматирования отрабатывает по разному

Вместо ожидаемого результата, мы можем наблюдать, что после форматирования, на месте, где должен появиться символ ‘,‘ отображается пробельный символ…wtf?

На некоторых моделях Xiaomi и Nokia работали 1 и 2 варианты

val myFormatter = DecimalFormat("#,###")
val formattedDigitsOne = myFormatter.format(number)

val formattedDigitsTwo = String.format("%,d", num)

на General Mobile только 3 вариант, на Samsung работали корректно все три варианта. Судя по всему прошивки китайских телефонов дают о себе знать.

Используя следующий метод форматирования числа

NumberFormat.getNumberInstance(Locale.US).format(number)

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

 

Ваш адрес email не будет опубликован. Обязательные поля помечены *