java — Почему double нельзя автоматически преобразовать в long?
Вопрос задан
Изменён 3 года 3 месяца назад
Просмотрен 397 раз
я изучаю Java,меня заинтересовало то что, автоматическое расширение при преобразовании double в long не произойдет,хотя они занимают 64бита
- java
- computer-science
Видимо ТС под автоматическим расширением имеется ввиду конструкцию типа:
int x=10; double d=10.0; long y=x; //автоматический каст long z=(long )d; //принудительный каст
Поясняю.
long
занимает 64 бита, из которых 63 бита отводятся на значение, 1 бит (самый старший) на знак, в итогеlong
занимает от-2^63
до+2^63
double
тоже занимает 64 бита, но 52 бита отводятся на дробную часть, 11 бит на степень (мантиссу) и 1 бит на знак — подробнее здесь, в итогеdouble
занимает от~-1. 308
Как видите внутренняя структура обоих типов совершенно другая и самое главное — максимальные значения тоже разные.
«Автоматический» каст проходит если только принимающий тип «шире» чем исходный, например:
long x=10; double y=x; //работает потому что double "шире" long
а вот конструкция:
double x=10.0; long y=x; //уже не работает, потому long "Уже" double long z=(long )x; //нужен принудительный каст
Потому что long это целое число, а double число с плавающей точкой. Если вы как разработчик знаете что у вас в double целое число, можете сделать явное приведение типов — но это ваше решение.
Зарегистрируйтесь или войдите
Регистрация через GoogleОтправить без регистрации
ПочтаНеобходима, но никому не показывается
Отправить без регистрации
ПочтаНеобходима, но никому не показывается
Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки
Java как преобразовать double в int
Как перевести число из double в int? Преобразование double в int производится автоматически, отбрасыванием дробной части (а не округлением). Таким образом, 6.541 превращается в 6, и этот результат присваивается переменной ival. Поскольку при таком преобразовании может быть потеряна точность, большинство компиляторов выдают предупреждение.
- Как перевести double в string Java
- Как выводить double
- Что такое parseInt в Java
- Как преобразовать string в int
- Что делает double в Java
- Чему равен double
- Что лучше double и float
- Как хранится double
- Чем parseInt отличается от Number
- В чем разница между int и Integer Java
- Что делает Println
- В чем разница между int и double
- Как перевести символ в int
- Можно ли умножать int на double
- Что такое double Parse
- Как хранится double Java
- Чем отличается double от float Java
- Что делает double
- Как устроен тип double
- Что быстрее double или float
- Как изменить строку в Java
- Как преобразовать строку в число
- Как перевести число в int Python
Как перевести double в string Java
Самый наивный и простой подход в языке Java при преобразовании строки в число, это использовать Double. parseDouble(String num).
Как выводить double
Для вывода значения типа double также используется %lf, для вывода long double — %Lf (в Windows может не работать). Значение типа double выводится либо с фиксированной точкой, либо с плавающей точкой, в зависимости от величины числа.
Что такое parseInt в Java
Описание Функция parseInt преобразует первый переданный ей аргумент в строковый тип, интерпретирует его и возвращает целое число или значение NaN. Результат (если не NaN) является целым числом и представляет собой первый аргумент (string), рассматривающийся как число в указанной системе счисления (radix).
Как преобразовать string в int
Если вы хотите преобразовать объект String в объект Integer (а не примитивный класс int), используйте метод valueOf () для класса Integer вместо метода parseInt (). Если вам нужно преобразовать строки в дополнительные примитивные поля Java, используйте такие методы, как Long. parseLong () и ему подобные.
Что делает double в Java
Для работы с вещественными (дробными) числами в Java используется тип double. В памяти он занимает 8 байт (в два раза больше, чем тип int) и может хранить значения в диапазоне -1.7*10308 до +1.7*10308.
Чему равен double
Значения типа double с двойной точностью имеют размер 8 байт. Формат напоминает формат чисел с плавающей запятой, за исключением того, что он имеет 11-разрядную экспоненту (ее значение может превышать 1023) и 52-разрядную мантиссу, а также еще один старший разряд.
Что лучше double и float
Имя double означает, что точность этих чисел вдвое превышает точность чисел типа float. В большинстве случаев тип double является наиболее удобным. Ограниченной точности чисел float во многих случаях попросту недостаточно.
Как хранится double
Кратко о том как Double хранится в памяти
Double занимает в памяти 8 байт или 64 разряда в двоичном представлении. Старший разряд хранит знак числа — 0 обозначает положительное число, а 1 отрицательное. 11 следующих разрядов занимает часть, которую называют экспонента. Оставшиеся 52 — часть называемая мантисса.
Чем parseInt отличается от Number
В двух словах: parseFloat и parseInt преобразуют в число максимальную соответствующую подстроку, с начала строки, отбросив предварительно пробельные символы. Number — целую строку, так же отбросив предварительно пробельные символы.
В чем разница между int и Integer Java
Integer — это обьект (как String) и, соответственно, ему выделяется больше памяти, чем постоянному типу int. Использую перегрузку методов, метод принимает аргумент Integer а подаю ему int.
Что делает Println
Print выводит свой аргумент в стандартный поток вывода. print(«Hello ») print(«world!») println выводит свой аргумент и добавляет перевод строки, так что следующее, что вы выведите, появится на следующей строке.
В чем разница между int и double
Переменная типа int (short, long) позволяет хранить только целые значения, тогда как переменная типа float (double) хранит в себе десятичные значения.
Как перевести символ в int
Для конвертации char в integer используйте следующую короткую комбинацию: int a; char b; a=b-‘0’;
Можно ли умножать int на double
При умножении int на double будет double. При делении от int останется только целая часть, но останется int.
Что такое double Parse
Преобразует строковое представление числа в эквивалентное ему число двойной точности с плавающей запятой.
Как хранится double Java
Тип double использует для хранения числовых значений 64 бита, однако некоторые процессоры применяют 80-разрядные регистры с плавающей точкой. Эти регистры обеспечивают дополнительную точность на промежуточных этапах вычисления, т.
Чем отличается double от float Java
Float — это 32 битное приближение, которое дает как минимум 6 значимых десятичных разрядов, а double — это 64 битное приближение, которое представляет по крайней мере 15 значимых десятичных разрядов. На практике эти числа подходят для большинства вычислений с вещественными числами.
Что делает double
Тип Double данных предоставляет наибольшее и наименьшее возможные величины для числа. Значение по умолчанию для типа Double — 0.
Как устроен тип double
Число́ двойно́й то́чности (Double precision, Double) — компьютерный формат представления числа с плавающей запятой, занимающий в памяти 64 бита, или 8 байт. Как правило, обозначает числа с плавающей запятой стандарта IEEE 754.
Что быстрее double или float
TL; DR: float, как и ожидалось, быстрее double, поэтому, если вы работаете с большими объемами данных и вам хватает точности float, то вы выбираете float.
Как изменить строку в Java
Если нужно изменить строку, то всегда можно создать её новую модифицированную копию; Java определяет класс просмотра (peer class) для String, называемый StringBuffer, который позволяет строкам стать изменяемыми, так что все нормальные манипуляции со строками все еще доступны в Java.
Как преобразовать char в int в Java
Чтобы преобразовать символ в целое число, вы можете использовать любой из следующих методов:
- Неявное преобразование
- Использование String.getBytes() метод
- Использование Character.digit() метод
Как преобразовать строку в число
Чтобы преобразовать строку в целое число, можно использовать встроенную функцию int(). Функция принимает в качестве параметра исходную строку, которую вы хотите преобразовать, и возвращает целочисленный эквивалент переданного вами значения. Общий синтаксис выглядит примерно следующим образом: int(«str»).
Как перевести число в int Python
Для преобразования в целое число служит функция int(). Можно также преобразовать строку, содержащую целочисленное значение. Для преобразования в дробное число (число с плавающей точкой) служит функция float(). Можно также преобразовать строку, содержащую дробное или целочисленное значение.
- В чем разница между int и Integer Java
Документация JDK 20 — Главная
- Главная
- Ява
- Java SE
- 20
Обзор
- Прочтите меня
- Примечания к выпуску
- Что нового
- Руководство по миграции
- Загрузить JDK
- Руководство по установке
- Формат строки версии
Инструменты
- Технические характеристики инструментов JDK
- Руководство пользователя JShell
- Руководство по JavaDoc
- Руководство пользователя средства упаковки
Язык и библиотеки
- Обновления языка
- Основные библиотеки
- HTTP-клиент JDK
- Учебники по Java
- Модульный JDK
- Руководство программиста API бортового регистратора
- Руководство по интернационализации
Технические характеристики
- Документация API
- Язык и ВМ
- банок
- Собственный интерфейс Java (JNI)
- Инструментальный интерфейс JVM (JVM TI)
- Сериализация
- Проводной протокол отладки Java (JDWP)
- Спецификация комментариев к документации для стандартного доклета
- Прочие характеристики
Безопасность
- Руководство по безопасному кодированию
- Руководство по безопасности
Виртуальная машина HotSpot
- Руководство по виртуальной машине Java
- Настройка сборки мусора
Управление и устранение неполадок
- Руководство по устранению неполадок
- Руководство по мониторингу и управлению
- Руководство по JMX
Client Technologies
- Руководство по специальным возможностям Java
Целые числа возвращены как Double — Java SDK
filipa. bandeira 1
Несмотря на то, что атрибут в Content Type определен как Integer, при запросе он возвращается как Double. Поэтому мне нужно преобразовать его в Double, а затем преобразовать в Integer. Получившийся код на Java выглядит так: entry.getField[java.lang.Double]("propertyReferenceID").toInt
.
Есть ли причина, по которой это происходит?
Чарли 2
У меня вроде работает нормально…
Если я получу https://cdn.contentful.com/spaces/
возвращает это:
{ . .. "поля": [ ... { "id": "цена", "имя": "Цена", "тип": "Число", «локализовано»: ложь, «требуется»: ложь, "отключено": ложь, "опущено": ложь }, ... { "id": "количество", "имя": "Количество", "тип": "Целое", «локализовано»: ложь, «требуется»: ложь, "отключено": ложь, "опущено": ложь }, ... ] }
Один номер
и один целое число
. Затем, если я получу запись этого типа контента, например: https://cdn.contentful.com/spaces/
Я получаю это:
{ ... "поля": { ... "цена": 12,99, ... "количество": 123 } }
Правильно ли установлены типы полей? Можете ли вы выполнить запросы, как я показал, и поделиться ответами?
Марио 3 953 это не помещается в целое число Java (в диапазоне от Integer.MIN до Integer.MAX). Наиболее подходящим, который мы смогли найти, является Double
, и поэтому мы выбрали его для повсеместного использования.
Я надеюсь, что это разъясняет решение, и ваше решение будет предпочтительным.
Привет,
Марио
1 Нравится
filipa.bandeira
1 Нравится
sbg 6
Согласен с @robert.rusu. Имея его как Double, можно запутаться и усложнить вычисление контрольной суммы для сравнения с исходными данными, особенно при обработке множества разных типов.