Код Java выглядит следующим образом:
String s = "0.01";
int i = Integer.parseInt(s);
Однако это бросает исключение NumberFormatException... Что может быть неправильным?
Код Java выглядит следующим образом:
String s = "0.01";
int i = Integer.parseInt(s);
Однако это бросает исключение NumberFormatException... Что может быть неправильным?
0.01 не является целым числом (целым числом), поэтому вы, конечно, не можете его разобрать. Вместо этого используйте Double.parseDouble
или Float.parseFloat
.
String s = "0.01";
double d = Double.parseDouble(s);
int i = (int) d;
Причиной исключения является то, что целое число не содержит рациональных чисел (= в основном дробей). Итак, попытка разобрать 0.3
на int - это вздор.
A double
или float
тип данных может содержать рациональные числа.
Способ, которым Java передает double
в int
, выполняется путем удаления части после десятичного разделителя округлением до нуля.
int i = (int) 0.9999;
i
будет нулевым.
Использование
String s="0.01";
int i= new Double(s).intValue();
String s="0.01";
int i = Double.valueOf(s).intValue();
Этот вид преобразования на самом деле невероятно неинтуитивный в Java
Возьмем, например, следующую строку: "100.00"
C: простая стандартная библиотечная функция по крайней мере с 1971 года (Откуда появилось имя` atoi`?)
int i = atoi(decimalstring);
Java: обязательный проход с помощью двойного (или Float) синтаксического анализа, за которым следует листинг
int i = (int)Double.parseDouble(decimalstring);
У Java наверняка есть некоторые странности в рукаве
Используйте Double.parseDouble(String a)
то, что вы ищете, не является целым числом, поскольку оно не является целым числом.
используйте этот
int number = (int) Double.parseDouble(s);
Использование BigDecimal для округления:
String s1="0.01";
int i1 = new BigDecimal(s1).setScale(0, RoundingMode.HALF_UP).intValueExact();
String s2="0.5";
int i2 = new BigDecimal(s2).setScale(0, RoundingMode.HALF_UP).intValueExact();