Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/30: Рейтинг темы: голосов - 30, средняя оценка - 4.87
 Аватар для gipsyscrew
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 5

Присвоение значений, переменным, типа double

03.10.2013, 20:11. Показов 6484. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе время суток, уважаемы программеры и кодеры ;-)
Начал читать Шильда и параллельно отрабатывать полученные навыки. На странице 99 говориться об операторе деления по модулю. Решил я на практике поставить несколько эксперементов, чтобы разобраться с этой операцией. Идея возникла такая: создаю 2 цикла в теле которых выполняю деление по модулю. Результат работы программы, получился не верный. С целью, вычислить ошибку, за комментировал строку с выражением, а ниже добавил обычную строку System.out.println(k); чтобы отследить результаты обычного деления. Результаты деления i на j получились не верные (вернее округлённые), а мне нужно получить полноценный результат с цифрами после запятой. Скажите пожалуйста, что я не так делаю и как мне правильно реализовать подобную идею.
Спасибо ;-)
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
public class Modulus {
    public static void main (String args[]){
        int i, j;
        double k;
 
        for (i=1; i<9; i++ )
            for (j=1; j<10; j++){
                k = (i / j);
                //System.out.println("(" + i + "mod" + j + ")" + k + "=" + i % j);
                System.out.println(k);
            }
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.10.2013, 20:11
Ответы с готовыми решениями:

Присвоение переменным значений
Добрый день! Подскажите пожалуйста, как лучше решить такую проблему программа для расчета, по экологии есть отдельный класс с...

Присвоение значений переменным
подскажите пожалуйста, вопрос наверно детсадовский), есть две переменные А и В, в А присвоен массив значений, которые нехочу чтоб...

Присвоение значений переменным
Создать переменные следующих типов – int, double, float, decimal, char и bool. Переменным типа int, double, float и byte присвоить...

8
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
03.10.2013, 20:33
Цитата Сообщение от gipsyscrew Посмотреть сообщение
k = (i / j);
Java
1
k = (i / (double)j);
и будет ок
1
 Аватар для gipsyscrew
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 5
03.10.2013, 22:16  [ТС]
ах нифига себе. Большое спасибо ещё раз. Приведение типа сделать нужно было. Я вот пытался копать в этом направлении но не смог разобраться как технически это оформить. Писал и так: k = double (i / j); и так k = double (i) / double (j); и ещё как то. Но соответственно не помогло :-(

Добавлено через 1 час 33 минуты
Java
1
2
3
4
5
/*
а как оно так получается, я же только одну переменную j приведу к double типу, 
а переменная i так и останется типа int или она автоматически повысится до double?
*/
k = (i / (double)j);
0
 Аватар для verylazy
462 / 462 / 71
Регистрация: 26.02.2013
Сообщений: 1,263
03.10.2013, 22:36
проверить не могу, но мне кажется правильно было бы писать
Java
1
k = (double) i / j;
1
 Аватар для gipsyscrew
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 5
03.10.2013, 23:31  [ТС]
да. сработало!!! Вот теперь и логика кода прозрачна :-)
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
04.10.2013, 10:27
Цитата Сообщение от gipsyscrew Посмотреть сообщение
i так и останется типа int или она автоматически повысится до double?
все вычисления автоматически приводятся по возрастанию к самому высшему типу в выражении, поэтому без разницы
привести первую, вторую или оба разом, именно поэтому я привожу вторую, так нагляднее

потому что вариант с
Цитата Сообщение от verylazy Посмотреть сообщение
k = (double) i / j;
неявный и в случае длинного выражения в скобках
типа
Java
1
k = (double) (i/j+3*z);
получится лажа
0
 Аватар для verylazy
462 / 462 / 71
Регистрация: 26.02.2013
Сообщений: 1,263
04.10.2013, 11:14
Цитата Сообщение от mutagen Посмотреть сообщение
все вычисления автоматически приводятся по возрастанию к самому высшему типу в выражении, поэтому без разницы
привести первую, вторую или оба разом, именно поэтому я привожу вторую, так нагляднее

потому что вариант с

неявный и в случае длинного выражения в скобках
типа
Java
1
k = (double) (i/j+3*z);
получится лажа
не буду спорить, потому что я нуб и нет пока доступа к джаве что бы проверить
но я был уверен что в моем выражении не i кастуется к типу дабл, а результат деления двух целых чисел
*ушел внимательно читать конвенции

Добавлено через 29 минут
почитал
"не i кастуется к типу дабл, а результат деления двух целых чисел" - тут я не прав, а в остальном, полагаю, все в порядке
но пока что мне не понятно почему не работает вариант i / (double)j
Java
1
k = (double) (i/j+3*z);
во первых тут не совсем уже начальные условия задачи
во вторых скобками выставлен приоритет, то есть каст будет после всех операций над числами
я бы предположил что писать надо так
Java
1
k = (double) i/j+3*z;
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
04.10.2013, 12:36
Цитата Сообщение от verylazy Посмотреть сообщение
во вторых скобками выставлен приоритет
это верно, но в длинном выражении велик шанс попутать очерёдность скобок если каст впереди
0
 Аватар для gipsyscrew
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 5
05.10.2013, 13:38  [ТС]
ага, значит в моём случае
Java
1
k = (i / (double)j);
работает правило: если любой из операндов имеет тип double, типом результата будет double.

Зачем разработчики так усложнили язык?! Я так понимаю, они хотели упростить а получилось наоборот. Раньше я программировал на Дэлфях и там как мне кажется, с типами данных, куда проще работать. Нет этих не явных преобразований типа. На пайтоне вообще никакого геморроя с типами данных :-) А быть может это дело привычки?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.10.2013, 13:38
Помогаю со студенческими работами здесь

Присвоение значений переменным
Друзья, сегодня впервые вплотную столкнулся с вопросом создания батников - нужно сделать батник, который по всему компьютеру удалял бы...

Присвоение значений переменным
В комбобокс на форме выводятся значения из столбца B. Private Sub UserForm_Initialize() i = 3 Do Until Cells(i, 2) = Empty ...

Присвоение значений внутренним переменным
Здравствуйте! помогите разобраться в задание : ------------------------- Создать командный файл 1.bat, выполнение которого ...

Присвоение значений переменным из поля БД
Столкнулся с проблемкой (по незнаю). Мне собственно надо присвоить значение переменной из поля БД. В списке я вывожу, а вот как именно...

Присвоение переменным значений из массива
Здравствуйте форумчане, очень мне стыдно, но не смог справится сам с, казалось бы простейшей задачей. В переменную $row после выполнения...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru