Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как преобразовать double в int

Короткий ответ

Приведение (int) отбрасывает дробную часть:

void main() {
    double price = 9.99;
    int whole = (int) price;
 
    IO.println(whole);
}

Результат:

9

С округлением

Чтобы округлить до ближайшего, сначала вызовите Math.round(). Он возвращает long, поэтому для int нужно ещё одно приведение:

void main() {
    double price = 9.99;
    int rounded = (int) Math.round(price);
 
    IO.println(rounded);
}

Результат:

10

Без потери данных

Math.toIntExact() выбросит исключение, если long не помещается в int:

void main() {
    IO.println(Math.toIntExact(Math.round(1e9)));
    IO.println(Math.toIntExact(Math.round(1e10)));
}

Результат:

1000000000
Exception in thread "main" java.lang.ArithmeticException: integer overflow

Частая ошибка

Приводить слишком большие значения и NaN. Java не выбрасывает исключение, а молча подставляет границу или ноль:

void main() {
    IO.println((int) 1e10);
    IO.println((int) Double.NaN);
    IO.println((int) -1e10);
}

Результат:

2147483647
0
-2147483648

Функции из этого ответа

  • Math.round() — Округляет число до ближайшего целого.
  • ArithmeticException — Возникает при недопустимой арифметической операции, например целочисленном делении на ноль.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.