Перейти к основному содержимому

Преобразование Double в Long в Java

· 2 мин. чтения

1. Обзор

В этом руководстве мы рассмотрим различные методы преобразования двойного значения в длинное в Java.

2. Использование приведения типов

Давайте проверим простой способ приведения double к long с помощью оператора cast:

Assert.assertEquals(9999, (long) 9999.999);

Применение оператора (длинного) приведения к двойному значению 9999,999 приводит к 9999.

Это сужающее примитивное преобразование , потому что мы теряем точность. Когда double приводится к long , результат останется тем же, за исключением десятичной точки.

3. Использование Double.longValue

Теперь давайте изучим встроенный метод longValue Double для преобразования double в long : ``

Assert.assertEquals(9999, Double.valueOf(9999.999).longValue());

Как мы видим, применение метода longValue к двойному значению 9999,999 дает 9999. Внутри метод longValue выполняет простое приведение типов .

4. Использование математических методов

Наконец, давайте посмотрим, как преобразовать double в long , используя методы round, ceil и floor из класса Math :

Давайте сначала проверим Math.round. Это дает значение, ближайшее к аргументу:

Assert.assertEquals(9999, Math.round(9999.0));
Assert.assertEquals(9999, Math.round(9999.444));
Assert.assertEquals(10000, Math.round(9999.999));

Во- вторых, мат. ceil выдаст наименьшее значение, которое больше или равно аргументу:

Assert.assertEquals(9999, Math.ceil(9999.0), 0);
Assert.assertEquals(10000, Math.ceil(9999.444), 0);
Assert.assertEquals(10000, Math.ceil(9999.999), 0);

С другой стороны, Math.floor делает прямо противоположное Math.ceil. Это возвращает наибольшее значение, которое меньше или равно аргументу:

Assert.assertEquals(9999, Math.floor(9999.0), 0);
Assert.assertEquals(9999, Math.floor(9999.444), 0);
Assert.assertEquals(9999, Math.floor(9999.999), 0);

Обратите внимание, что и Math.ceil , и Math.round возвращают двойное значение, но в обоих случаях возвращаемое значение эквивалентно длинному значению.

5. Вывод

В этой статье мы обсудили различные методы преобразования double в long в Java. Желательно иметь представление о том, как ведет себя каждый метод, прежде чем применять его к критически важному коду.

Полный исходный код этого руководства доступен на GitHub .