«1. Обзор
В этом уроке мы рассмотрим различные методы преобразования double в long в Java.
2. Использование приведения типов
Давайте проверим простой способ приведения типа double к типу long с помощью оператора приведения:
Assert.assertEquals(9999, (long) 9999.999);
Применение оператора (длинного) приведения к значению типа double 9999,999 приводит к результату 9999. ~ ~~ Это сужающее примитивное преобразование, потому что мы теряем точность. Когда двойное число приводится к длинному, результат останется прежним, за исключением десятичной точки.
3. Использование Double.longValue
Теперь давайте рассмотрим встроенный метод longValue класса Double для преобразования типа double в тип long:
Как мы видим, применение метода longValue к значению типа double 9999,999 дает 9999. Внутри метод longValue выполняет простое приведение типов.
Assert.assertEquals(9999, Double.valueOf(9999.999).longValue());
4. Использование математических методов
Наконец, давайте посмотрим, как преобразовать double в long с помощью методов round, ceil и floor из класса Math:
Давайте сначала проверим Math.round. Это дает значение, ближайшее к аргументу:
Во-вторых, Math.ceil выдаст наименьшее значение, которое больше или равно аргументу:
Assert.assertEquals(9999, Math.round(9999.0));
Assert.assertEquals(9999, Math.round(9999.444));
Assert.assertEquals(10000, Math.round(9999.999));
С другой стороны, Math.floor делает прямо противоположно Math.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.ceil, и Math.round возвращают двойное значение, но в обоих случаях возвращаемое значение эквивалентно длинному значению. .
Assert.assertEquals(9999, Math.floor(9999.0), 0);
Assert.assertEquals(9999, Math.floor(9999.444), 0);
Assert.assertEquals(9999, Math.floor(9999.999), 0);
5. Заключение
В этой статье мы обсудили различные методы преобразования double в long в Java. Желательно иметь представление о том, как ведет себя каждый метод, прежде чем применять его к критически важному коду.
Полный исходный код этого руководства доступен на GitHub.
«