Помогите понять почему в коде так происходит:
int celsium = 41;
double y;
y= celsium *9/5 + 32; y =105.0 (округляет кагбудто все int вначале а потом становиться дробной)
А если переделать int в double то получается нормально
double y;
double x =celsium;
y= x*9/5 + 32; y =105.8
в первом же случаи тоже по логике вся y переменная дробная, и ответ должен полностью быть дробным и подсчет.
Мишаня
25 уровень
Помогите понять( тем кто не решил не заходите, спойлеры тут)
Решен
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
--------Master
19 октября 2018, 20:40решение
В первом случае в выражении участвуют только целые значения, поэтому преобразование в дробное происходит уже только при присвоении результата, т.к. у - double. Без явной необходимости целые числа в дробные не преобразуются.
Во втором х является дробным значением, соответственно все расчеты выполняются с плавающей точкой с самого начала
+2
Savely Nikulin
19 октября 2018, 20:38
В первом случае можно преобразовать используя (double). Получиться y = (celsium * (double)(9 / 5)) + 32
0