#java #string #kotlin #integer
Вопрос:
Я пытаюсь преобразовать строку «3.0» в int в java. Я попытался преобразовать с помощью Integer.parseInt, но это вызывает исключение. Любая идея, как я могу преобразовать строку с десятичными значениями в int в java и kotlin
String value = "3.0";
int i = Integer.parseInt(value);
Комментарии:
1. разберите его на а
Double
, а затем сделайте.toInt()
на нем. Но вам нужно учитывать, что произойдет с такими случаями, как1.999
вы хотите1
или2
для этого и т. Д. Если вы хотите2
, то это более сложная вещь, вы также можете попробоватьFloat
вместоDouble
этого .
Ответ №1:
В котлине вы можете сделать это так
val str = "3.0"
val result = str.toDouble().toInt()
Ответ №2:
String value = "3.0";
int i = (int) Float.parseFloat(value);
Комментарии:
1. Пожалуйста, не публикуйте только код в качестве ответа, но также предоставьте объяснение того, что делает ваш код и как он решает проблему вопроса. Ответы с объяснением, как правило, более полезны и более качественны, и с большей вероятностью привлекут внимание.
Ответ №3:
Преобразуйте строку в целое число, затем проанализируйте:
int i = Integer.parseInt(str.replaceAll("\..*", ""));
Это удаляет точку и все, что после нее, что фактически приводит к преобразованию типа с плавающей запятой в целое число.
Ответ №4:
Вы не можете анализировать "3.0"
как целое число, потому что оно представляет значение с плавающей запятой. Лучше всего проанализировать его как таковой, используя удобные встроенные функции ( Double.parseDouble("3.0")
или Float.parseFloat("3.0")
), а затем преобразовать его в целое число.
Способ преобразования зависит от того, как вы хотите обрабатывать десятичную часть
- отбросьте его (число приближается к нулю): приведите к
int
(int) 2.5
=2
,(int) -2.5
=-2
- округлите его до ближайшего целого числа:
Math.round()
, затем приведите*(int) Math.round(2.5)
=3
,(int) Math.round(-2.5)
=-3
- округлите до большего целого числа (число движется к положительной бесконечности):
Math.ceil()
затем приведите(int) Math.ceil(2.5)
=3
,(int) Math.ceil(-2.5)
=2
- округлите до меньшего целого числа (число движется к отрицательной бесконечности):
Math.floor()
затем приведите(int) Math.floor(2.5)
=2
,(int) Math.floor(-2.5)
=-3
* Math.round
принимает либо a float
, либо a double
и производит a int
или a long
соответственно, поэтому вам не нужно приводить int
, если вы используете a float
. Однако все остальные Math
методы требуют double
s, поэтому я использую это для согласованности
Котлин-это то же самое, эквиваленты такие:
- разбор:
"2.5".toDouble()
- десятичное отклонение:
2.5.toInt()
- обход до ближайшего:
2.5.roundToInt()
- раунд к более высокому:
ceil(2.5).toInt()
- раунд на понижение:
floor(2.5).toInt()
(функции kotlin.math
включены )