Преобразование double в int на Java — все способы с примерами

Обратная задача: превратить дробное число типа double в целое. Здесь возможна потеря дробной части — рассмотрим три способа.

Пример 1: double в int через явное приведение

Просто приводим тип через (int).

class Main {
  public static void main(String[] args) {

    // create double variables
    double a = 23.78D;
    double b = 52.11D;

    // convert double into int
    // using typecasting
    int c = (int)a;
    int d = (int)b;

    System.out.println(c);    // 23
    System.out.println(d);    // 52
  }
}

Вывод:

23
52

Это сужающее преобразование — дробная часть просто отбрасывается. Поэтому 23.78 превращается в 23, а 52.11 — в 52.

Предупреждение

Этот способ работает, только пока значение double не превышает максимум int (2147483647). Иначе будут потери данных.

Пример 2: double в int через Math.round()

Если нужно округлять, а не просто отбрасывать дробную часть, используем Math.round().

class Main {
  public static void main(String[] args) {

    // create double variables
    double a = 99.99D;
    double b = 52.11D;

    // convert double into int
    // using typecasting
    int c = (int)Math.round(a);
    int d = (int)Math.round(b);

    System.out.println(c);    // 100
    System.out.println(d);    // 52
  }
}

Вывод:

100
52

Метод Math.round() возвращает значение типа long — округлённое до ближайшего целого. Затем мы приводим его к int. Поэтому 99.99 округляется до 100, а не отбрасывается до 99.

Пример 3: преобразование объекта Double в int

Если у нас объект класса-обёртки Double, используем метод intValue().

class Main {
  public static void main(String[] args) {

    // create an instance of Double
    Double obj = 78.6;

    // convert obj to int
    // using intValue()
    int num = obj.intValue();

    // print the int value
    System.out.println(num);    // 78
  }
}

Вывод:

78

Метод intValue() достаёт целочисленное значение из объекта Double. Дробная часть отбрасывается — 78.6 превращается в 78.