Скажите, пожалуйста, почему в этой задаче множитель нужно записывать с нулём в конце 9/5.0?
Сергей
4 уровень
Почему множетель нужно писать с нулём в конце?
Решен
Комментарии (11)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Wl.
29 января 2019, 22:58
/* Комментарий удален */
0
DinosauR
29 января 2019, 23:05
хотя бы одна из них
0
DinosauR
30 января 2019, 00:25
речь о плавающей запятой, а не ноле)
0
Ярослав Java Developer Master
29 января 2019, 19:51
Тогда это будет дробное число, а при делении целого числа на дробное, результатом будет дробное число.
0
Сергей
29 января 2019, 19:53
Т.е. 9/5 воспринимается программой как целое число?
0
Ярослав Java Developer Master
29 января 2019, 20:20решение
Да, дробная часть будет откинута, результатом операции будет 1.
+3
Сергей
30 января 2019, 08:17
Я правильно понимаю, что дробная часть будет откинута потому, что 9/5 умножается на переменную celsium типа int? Именно int отбрасывает отбрасывает дробную часть. А чтобы дробная часть всё таки была присвоена переменной типа double, мы эту дробную часть обозначаем в множителе.
0
hidden #598481
30 января 2019, 08:49решение
нет, даже если бы ты не умножал на переменную celsium типа int, дробная часть все равно бы отбросилась. Так работает компилятор: поскольку ни у одного из чисел 9 и 5 нет дробной части, значит операция происходит в целых числах. Если любое из чисел представлено в виде числа double, то результаты всех дальнейших операций будут double.
Примеры
1 / 2 + 1 = 0 + 1 = 1
1.0 / 2 + 1 = 0.5 + 1 = 1.5
1 / 2 + 1.0 = 0 + 1.0 = 1.0
(double) 1 / 2 + 1 = 1.0 / 2 + 1 = 0.5 + 1 = 1.5
(double) (1 / 2 + 1) = (double) (0 + 1) = (double) 1 = 1.0
+3
Сергей
30 января 2019, 09:07
Если применить это к нашей задаче, то код можно записать одним из следующих методов:
double TF = celsium * 9/5.0 + 32
double TF = celsium * 9.0/5 + 32
double TF = (double)celsium * 9/5 + 32
double TF = celsium * (double)9/5 + 32
Но double TF = (double)(celsium * 9/5 + 32) будет неправильно
0
hidden #598481
30 января 2019, 09:26полезный
Верно, но учти, что первый вариант работает только благодаря тому, что первое действие умножение, а не деление. Если бы надо было делить, то celsium / 9 / 5.0 было бы неправильным, т.к. при делении на 9 уже бы потерялась дробная часть.
Есть еще один способ, который мне нравится. Пишешь формулу в int, и дописываешь в начале 1.0 * на формулу. На результат вычислений не повлияет, и вычисления пойдут в double:
double TF = 1.0 * celsium * 9 / 5 + 32
По такому же принципу можно переводить числа в строку:
String s = "" + 1;
+5
Сергей
30 января 2019, 10:14
vk, спасибо за чёткий и конкретный ответ.
+2