Преобразовать строку в число с плавающей запятой или Int в KOTLIN - PullRequest
0 голосов
/ 28 января 2020

Мне нужно преобразовать версию приложения в Int или Float для сравнения. Я использую следующий синтаксис, но он выдает java.lang.NumberFormatException.

val currentVersion = BuildConfig.VERSION_NAME.toFloat()

Редактировать: Что, если мне нужно конвертировать "2.2" во float?

Ответы [ 3 ]

2 голосов
/ 28 января 2020

Сравнение версий приложения может быть очень простым, например, сравнение версий 1.0 и 2.0.

Но иногда это может усложниться, если сравнивать версии 1.0.2-rc2 и 1.0.2-rc3 или 2.0.0-beta и 2.0.0. В этой ситуации вы не можете просто преобразовать versionName в Int или Float тип. Который не является доказательством будущего, кстати, причина, скорее всего, 1.19 будет считаться более старой версией, чем 1.2.

Чтобы упростить это сравнение, вы можете проверить эту библиотеку - Сравнение версий (github) . (Альтернатива - Semver4j ) Я думаю, что он справится с большинством случаев.

Кроме того, вы можете прочитать немного больше о версиях в этом посте .

2 голосов
/ 28 января 2020

Обычно имя версии записывается следующим образом: «1.0.0» (конечно, вы можете проанализировать строку и затем получить 3 числа: «1», «0» и «0»), поэтому вы не можете преобразовать ее в числовой формат. В противном случае вы можете использовать VERSION_CODE , он вернет число

0 голосов
/ 28 января 2020

Если вы получили NumberFormatException, это означает, что строка не является допустимым представлением числа.

Ваш BuildConfig.VERSION_CODE является допустимым Int, можете ли вы его использовать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...