Всем привет! Кто может обьяснить почему когда вычисляешь значение переменной double то важны именно дробные? Пример:
double fahrenheit = 9.0 / 5.0 * celsius + 32: Ответ: 105.8 (правильный)
double fahrenheit = 9 / 5 * celsius + 32; Ответ: 73.0 (неправильный)
Как так получается?
Daniil Smirnov
5 уровень
Обьясните кому не трудно.
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Justinian Judge в Mega City One Master
21 апреля 2020, 12:57
Число без дробной части, то есть, целочисленное число, компилятором в джаве интерпретируется как тип интеджер. Целочисленный тип.
Результатом операций с целочисленным типом - является целочисленное число.
Поэтому 5 / 2 = 2. Ведь сколько "целых" раз, двойка поместится в пятерке? 2 раза. Вот результат и два.
Если нам нужна точность, то мы должны явно указать что мы хотим точность вычислений, это
либо явным добавлением дробной части, 5 -> 5.0
либо приведением к вещественному типу 5 -> (double) 5
либо явным указанием, что этот литерал это вещественный тип 5 -> 5d или 5-> 5f (d - double, f - float)
+6
Daniil Smirnov
21 апреля 2020, 19:18
Блин, СПАСИБО!)
+1
VladimirMaster
22 апреля 2020, 03:30
По дефолту double инициализируется не нулем, а 0.0 А вот int по умолчанию инициализируется, как 0. Подводим итог: int это совершенно не double. Числа 5 и 5.0 это совершенно разные результаты. Отсюда делай вывод.
0