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

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

03.10.2013, 20:11. Показов 6529. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru