Содержание

java — Почему double нельзя автоматически преобразовать в long?

Вопрос задан

Изменён 3 года 3 месяца назад

Просмотрен 397 раз

я изучаю Java,меня заинтересовало то что, автоматическое расширение при преобразовании double в long не произойдет,хотя они занимают 64бита

  • java
  • computer-science
1

Видимо ТС под автоматическим расширением имеется ввиду конструкцию типа:

int x=10;
double d=10.0;
long y=x; //автоматический каст
long z=(long )d;  //принудительный каст

Поясняю.

  1. long занимает 64 бита, из которых 63 бита отводятся на значение, 1 бит (самый старший) на знак, в итоге long занимает от -2^63 до +2^63
  2. 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

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки

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

Прочее › Java

Как перевести число из double в int? Преобразование double в int производится автоматически, отбрасыванием дробной части (а не округлением). Таким образом, 6.541 превращается в 6, и этот результат присваивается переменной ival. Поскольку при таком преобразовании может быть потеряна точность, большинство компиляторов выдают предупреждение.

  1. Как перевести double в string Java
  2. Как выводить double
  3. Что такое parseInt в Java
  4. Как преобразовать string в int
  5. Что делает double в Java
  6. Чему равен double
  7. Что лучше double и float
  8. Как хранится double
  9. Чем parseInt отличается от Number
  10. В чем разница между int и Integer Java
  11. Что делает Println
  12. В чем разница между int и double
  13. Как перевести символ в int
  14. Можно ли умножать int на double
  15. Что такое double Parse
  16. Как хранится double Java
  17. Чем отличается double от float Java
  18. Что делает double
  19. Как устроен тип double
  20. Что быстрее double или float
  21. Как изменить строку в Java
  22. Как преобразовать char в int в Java
  23. Как преобразовать строку в число
  24. Как перевести число в 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 — Главная

  1. Главная
  2. Ява
  3. Java SE
  4. 20

Обзор

  • Прочтите меня
  • Примечания к выпуску
  • Что нового
  • Руководство по миграции
  • Загрузить JDK
  • Руководство по установке
  • Формат строки версии

Инструменты

  • Технические характеристики инструментов JDK
  • Руководство пользователя JShell
  • Руководство по JavaDoc
  • Руководство пользователя средства упаковки

Язык и библиотеки

  • Обновления языка
  • Основные библиотеки
  • HTTP-клиент JDK
  • Учебники по Java
  • Модульный JDK
  • Руководство программиста API бортового регистратора
  • Руководство по интернационализации

Технические характеристики

  • Документация API
  • Язык и ВМ
  • Имена стандартных алгоритмов безопасности Java
  • банок
  • Собственный интерфейс 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//content_types/?access_token = возвращает это:

 {
. ..
  "поля": [
...
    {
      "id": "цена",
      "имя": "Цена",
      "тип": "Число",
      «локализовано»: ложь,
      «требуется»: ложь,
      "отключено": ложь,
      "опущено": ложь
    },
...
    {
      "id": "количество",
      "имя": "Количество",
      "тип": "Целое",
      «локализовано»: ложь,
      «требуется»: ложь,
      "отключено": ложь,
      "опущено": ложь
    },
...
  ]
}
 

Один номер и один целое число . Затем, если я получу запись этого типа контента, например: https://cdn.contentful.com/spaces//entries/?access_token= Я получаю это:

 {
...
  "поля": {
...
    "цена": 12,99,
...
    "количество": 123
  }
}
 

Правильно ли установлены типы полей? Можете ли вы выполнить запросы, как я показал, и поделиться ответами?

Марио 3 953 это не помещается в целое число Java (в диапазоне от Integer.MIN до Integer.MAX). Наиболее подходящим, который мы смогли найти, является Double , и поэтому мы выбрали его для повсеместного использования.

Я надеюсь, что это разъясняет решение, и ваше решение будет предпочтительным.

Привет,
Марио

1 Нравится

filipa.bandeira

1 Нравится

sbg 6

Согласен с @robert.rusu. Имея его как Double, можно запутаться и усложнить вычисление контрольной суммы для сравнения с исходными данными, особенно при обработке множества разных типов.