Правильный ответ: d = 5.5

  • 6
  • Недоступна
Будьте осторожны с сужающим приведеним типов! Применение этой техники приводит к неожиданным результатам. Запомните это на всю жизнь, а пока — решите задачку на преобразование типов. Код уже весь написан, но чего-то не хватает, а именно — одной операции по приведению типов. Найдите, куда её нужно поместить, чтобы получить правильный ответ.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (20)
  • популярные
  • новые
  • старые
Для того, что бы оставить комментарий вы должны авторизоваться
Andrey Tyurin18 уровень, Казань
7 января, 12:21
почему float не канает, а нужен double?
DinosauR12 уровень, Киев
3 января, 23:40
Первым выполняется деление b/c = 1,333333333333333, но это же int, по этому не 1,333333333333333 а 1. дальше 1/e = 0.5 теперь можно складывать с a. говорила тебе мама: Учись сынок!
DancingShaman23 уровень
24 сентября 2018, 21:15
Чуваки, чтобы нормас понять решение этой задачи, нужно загуглить про promotion rules в java и знать, что оператор приведения типов действует только на литерал/переменную/значение выражения, которое находится справа от него, то есть, за ним.
10 сентября 2018, 05:10
Решил перебором вариантов. Эту тему вообще не понимаю.
Рустам17 уровень, Минск
29 июля 2018, 17:08
Решил методом проб и ошибок...в нужном месте необходимо поставить (float)
Nazhmiddin Bakhriddinov20 уровень
8 июня 2018, 23:05
не понимаю как же так -> double d = a + b / c / (double) e; это же 5+4/3/2.0 = даёт 5.5? Если считать по человечейский то поличиться 5,66666666666......?
Body15 уровень
1 августа 2018, 18:12
b/c = 1 delenie deloitza deren integer! patom (double)e delenie deloitza deren double i 1/2 = 0,5 patom +a = 5+0.5 =5.5! :)
Gennadiy11 уровень, Одесса
12 января, 19:27
int b / int c (4 / 3) = 1 (дробная часть отбрасывается). double e = 2.0; 1 / 2.0 = 0.5;
YarDK20 уровень, Москва
18 мая 2018, 09:39
int 4/3 = 1; int 1/2 = 0; При добавлении операции преобразование типов к одной из переменных в уравнение, мы меняем тип обеих этих переменных (грубо и не факт, что правильно, но это помогло осмыслить решение).
Слава Тарасов15 уровень, Москва
29 сентября 2017, 10:15
double d = (a + b / c / (double)e); Не принимает. Пишет - Начальное значение переменных при инициализации менять нельзя. Можно добавлять только операторы приведения типа. РЕКОМЕНДАЦИЯ ОТ МЕНТОРА Инициализацию переменной 'd' менять нельзя, но можно добавлять оператор приведения типа.
15 декабря 2017, 15:37
все верно, вы внешними скобками изменяете условие
karbofas18 уровень
13 августа 2017, 09:19
Можно ещё double d = a + (double)(b / c) / e; Но этот ответ не принимает, хотя 5.5, как надо
di.p12 уровень, Симферополь
14 сентября 2017, 20:39
Тоже так сделал и был очень удивлен, что не прошло.В то время как в IDE все транслируется и выводит 5,5. Странный валидатор.
15 декабря 2017, 15:37
скобками вы меняете условие задачи, В задаче сказано можно делать только приведение
Serega Zaycev11 уровень, German
28 мая 2017, 14:39
It is right