Как правильнее преобразовать int в double?
У меня есть число int = 105; 1 это доллар а 05 в нем это центы, как правильнее преобразовать их? я пробовал через double но в итоге получил 1.5, а нужно 1.05.
summa = 105; double d = new BigDecimal(summa).divide(new BigDecimal(100)).doubleValue(); System.out.println(d);
Отслеживать
John Williams
задан 11 ноя 2019 в 10:21
John Williams John Williams
61 2 2 серебряных знака 10 10 бронзовых знаков
11 ноя 2019 в 10:34
Все верно, но когда на входе число сто ответ получается 1.0
11 ноя 2019 в 10:41
а сколько вы хотели.
11 ноя 2019 в 10:52
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Странно, ваш метод должен работать, но можно проще.
int sum = 105; double d = sum/100.0;
Отслеживать
ответ дан 11 ноя 2019 в 10:49
2,331 10 10 серебряных знаков 15 15 бронзовых знаков
- java
- математика
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Преобразование Double в Integer в Java
При работе с числовыми данными в Java, часто возникает необходимость преобразования одного числового типа в другой. Например, когда есть число с плавающей точкой типа Double, и его нужно преобразовать в целое число типа Integer.
Double number = 123.45; Integer integerNumber = (Integer) number;
При попытке выполнить приведенный выше код, возникнет исключение java.lang.ClassCastException с сообщением об ошибке «java.lang.Double incompatible with java.lang.Integer». Это происходит потому что, в отличие от некоторых других языков программирования, Java не позволяет прямое приведение типов между Double и Integer.
Как преобразовать Double в Integer в Java?
Решение этой проблемы лежит в использовании метода intValue() , который является частью класса java.lang.Double . Метод intValue() преобразует значение объекта Double в int.
Double number = 123.45; Integer integerNumber = number.intValue();
Теперь, когда код выполняется, integerNumber получит значение 123. Обратите внимание, что дробная часть числа просто отбрасывается вместо округления до ближайшего целого числа.
Если требуется округление до ближайшего целого числа, можно использовать метод Math.round() .
Double number = 123.45; Integer integerNumber = (int) Math.round(number);
В этом случае, если дробная часть числа 0.5 или больше, число округляется до ближайшего большего целого числа. Если дробная часть числа меньше 0.5, число округляется до ближайшего меньшего целого числа.
Как перевести int в double java
Открою вам страшную тайну. -27008 — это в бинарном представлении 11111111111111111001011010000000 а число 1001011010000000, которое вы в статье отразили картинкой — это честные 38528
WriturX [Andrij] Уровень 16
27 января 2022
Есть кому интересно 耰 — Мучить, терзать, нервировать. Совпадение? Не думаю.
25 января 2022
Можете объяснить, почему лонг в дабл преобразуется автоматически, а наоборот — нет и нужно кастить. Но для обоих типов, при этом, выделяется 64 бита.
Artem Sokolov Уровень 26
6 января 2022
Жаль, не рассказали о примерах в жизни где это может понадобиться.
AmpCult Уровень 24
18 марта 2021
Диапазон char должен быть от 0 до 65535, а значит общее количество значений 65536 = 2^16 или 2 байта, но в первой таблице указан диапазон от 0 до 65536. Можно пояснительную бригаду? Буду очень благодарен.
Никита Уровень 14
10 марта 2021
Разве недостаточно выделить под булевые значения 1 бит? Всего же 2 значения — 1 и 0
Just me Уровень 41
23 февраля 2021

Помогите понять, какие именно первые 16 бит были взяты из числа типа int при приведении к типу short ?
Евгений Уровень 38
1 февраля 2021
Во второй лекции 10-го уровня указан совершенно другой диапазон значений и размеров в байтах. Как так вышло?
Константин Уровень 22
15 января 2021

видимо должен быть «char»
Андрей Вишняков Уровень 16
6 января 2021
Очень удивлен, что логической переменной присвоили целых 8 бит или байт, а если не в массиве (не удивлюсь, если массивный тру не будет равен обычному ) то целый инт! Хотелось бы понять зачем сделали так, ведь булеан — эта основа всего программирования и делать его больше одного бита лично я не вижу смысл. Тру 1, фальш 0. Откуда 8 и 32?
Преобразование типов данных в java
Автоматическое преобразование типов данных в языке программирования java происходит в том случае, если мы присваиваем одной переменной значение переменной другого типа, и при этом выполняются следующие условия:
- типы данных должны быть совместимы (например, нельзя присваивать переменной типа boolean значение типа int);
- тип данных переменной, которой присваивается значение, должен быть больше по размеру типа данных переменной, чье значение присваивается.
Например, можно преобразовывать значение типа short в тип int. Это называется расширяющим преобразованием.
А вот если вам понадобится преобразовать значение типа long в значение типа short, автоматически этого не произойдет. Данное преобразование приходится осуществлять вручную — это называется сужающим преобразованием.
Чтобы сопоставить такие несовместимые типы, необходимо явно указать операцию приведения типов, например:
long 1 = 111111111; short s; s = (short) 1; // Приведение типов.
Другая операция, под названием усечение, происходит при присвоении значения с плавающей точкой переменной с целым типом. Скажем, значение 1.11 будет усекаться до значения 1.
Чтобы узнать, совместимы ли два типа данных, необходимо использовать оператор instanceof. Приведу пример его использования — пояснения см. в комментариях (листинг 2.8).
Листинг 2.8.
Пример использования оператора instanceof
Type i; Туре2 j; if (i instanceof Туре2) // Если тип переменной i совместим с типом данных Туре2, то: j = (Туре2) i; // Преобразуем значение i в Туре2.
Искусственно можно преобразовывать значения почти любых типов данных в иные типы данных (например, преобразовать строку в любой тип данных, используя методы, которые предлагает класс String). Для этого необходимо применять методы так называемых классов-оболочек из пакета java.util (подробнее об этом говорится в главе ”Знакомьтесь: пакеты”).
Вам також може сподобатися

Уроки по android разработке на Java 6 8 543
В этом уроке вы увидите, как сделать простейший браузер, который отобразит страницу в интернете

Уроки по android разработке на Java 0 1 637
В этом уроке узнаем, что такое Activity Lifecycle, познакомимся с методами жизненного цикла активити,

Архитектура андроид-приложений 1 30 152
Четвертая лекция курса по архитектуре клиент-серверных android-приложений, в которой мы поговорим о том, что

Документация по android 2 31 300
Перевод статьи на Медиуме о технологии Broadcast Receivers (широковещательные приемники). Это компоненты андроид, которые

Продвинутые курсы по разработке мобильных приложений на Android 116 15 405
Продвинутый курс “Разработка приложения для сайта” В этом Продвинутом курсе вы узнаете, как создать

Создаем android-приложения 5 3 267
Reminder (Напоминалка) – создавайте напоминания, списки покупок или небольшие заметки! Создавайте задачи с напоминаниями
Коментарі: 4
Здравствуйте, долго искал по опратору instanceof, но все равно не понятно: String stroka = “”;
boolean proverka;
proverka = stroka instanceof Integer; Почему не работает такая программа? Как я понял, instanceof выдает true/false, но с классами типа Integer/Character/Double и т.д. работать не хочет… В чем дело?
admin (автор)
В данном примере компилятор выдает ошибку еще до выполнения кода, поскольку классы String и Integer не могут быть автоматически преобразованы друг к другу и не состоят в связях наследования.
Додати коментар Скасувати відповідь
Щоб відправити коментар вам необхідно авторизуватись.