JavaRush /Курсы /Java Syntax /Вещественные типы

Вещественные типы

Java Syntax
10 уровень , 7 лекция
Открыта

— Вот тебе пару интересных вещей про вещественные (они же дробные) типы. Начнём вот с этого примера:

float f = 3 / 5;

В результате данного вычисления значение f будет равно… нулю!

— Мне Риша что-то подобное рассказывал…

— Да? Вот и отлично. Повторение – мать учения.

— На самом деле тут нет никакой ошибки. В делении участвуют два целых числа, поэтому происходит деление нацело, остаток от деления просто отбрасывается. Чтобы такого не было, нужно, чтобы хотя бы одно из двух чисел, участвующих в делении, было дробным.

— Если одно из чисел дробное, то сначала второе число будет преобразовано к дробному типу, а затем будет выполнено деление.

— Вот как можно решить данную проблему:

Запись дробного числа:
float f = 3.0f / 5.0f;
float f = 3.0f / 5;
float f = 3 / 5.0f;

— А если в делении участвуют переменные?

— Тогда – вот так:

Преобразование целой переменной в вещественную
int a = 3, b = 5;
float f = (a * 1.0f) / b;


int a = 3, b = 5;
float f = a / (b * 1.0f);


int a = 3, b = 5;
float f = (a * 1.0f) / (b * 1.0f);


 int a = 3, b = 5;
float f = (float) a / b; 

— Не очень красиво. А что, нет какой-нибудь более удобной операции деления?

— Нет. Это все, что есть.

— Ну, ок, думаю, проблем не будет.

10
Задача
Java Syntax Pro, 10 уровень, 7 лекция
Недоступна
Поработаем со StringBuilder
Нужно реализовать 2 метода, используя StringBuilder: addTo(String, String[]), replace(String, String, int, int). 1. Метод addTo(String, String[]) добавляет к строке, полученной первым параметром, все строки по порядку из массива строк, полученного вторым параметром, и возвращает объект типа StringBu
10
Задача
Java Syntax Pro, 10 уровень, 7 лекция
Недоступна
Разворот строки
Используя StringBuilder в методе reverseString(String), разверни строку, полученную как параметр.
Комментарии (96)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
ArturLamp Уровень 2
2 ноября 2022
a double вообще используется?
AMIGO_2022_11_09 Уровень 17
7 декабря 2022
для вещественных в основном дабл используется повсеместно. Флоаты я только в геймдеве видел
Максим Уровень 22 Expert
11 августа 2023
Double является типом по умолчанию для дробных, int по умолчанию для целых
13 августа 2022
можно писать: float f = 3./5 (просто поставить точку, без ноликов
Игорь Топоров Уровень 14
11 февраля 2022
Короче, хотим точный результат, пишем float a = (float) ... //(float) в скобках решит многие проблемы
Masha Frolova Уровень 22
18 сентября 2021
а так можно: float f = (float) 3/5; ?
Sergey O. Уровень 64
19 сентября 2021
это легко проверить в IDE
Michael Ginzburg Уровень 21
20 октября 2021
Да, конечно. Порядок преобразования: 1. 3 => 3.0 2. 5 => 5.0 результат 0.6
Mark Уровень 19
2 ноября 2021
а так нельзя: float f = (float) (3 / 5); sout(f); _________________ 0
Sammi Уровень 18
8 марта 2023
в скобки 3/5 не бери и всё будет 👍
Сергей Уровень 30 Expert
31 июля 2021
(float) a / b; преобразуется во float результат деления или какая то из переменных (или обе)? Если результат, то если а будет меньше b , то итог будет также 0
Michael Ginzburg Уровень 21
20 октября 2021
Сначала преобразуется а. Затем б, так как а типа флоат. Т.е Преобразование действует только на ближайшую переменную.
Сергей Уровень 30 Expert
23 октября 2021
спасибо
25 июня 2021
Ну все просто: Если не писать этот "f", то джава не будет считать это число дробью и ничего не напишет после запятой. Тут нас просят убедительно: словно собака Павлова на уровне инстинктов вижу дробь = ставлю f.
Popka Уровень 24
6 сентября 2021
не совсем так. Если написать просто 1.0 то джава будет считать это дробью типа double по умолчанию. Если нам нужен float мы пишем 1.0f
Дмитрий Б.Г. Уровень 32
2 июня 2021
Вдруг кто не понял почему здесь:

float f = 3 / 5;
результатом будет именно ноль. 2 момента: 1. Выражения с операцией присваивания выполняются справа налево, а математические выражения слева направо. 2. Литералы (когда мы руками явно пишем число, например) имеют свой тип по умолчанию: а) Целые числа - это int по умолчанию. b) Числа с плавающей точкой - это double по умолчанию. Следовательно в примере выше происходит следующее: 1. Операция присваивания начинается справа налево. 2. Справа у нас выражение с двумя литералами (int по умолчанию), результатом которого будет (int) 3 / (int) 5 == (int) 0 3. При присваивании результата выражения переменной типа float происходит приведение типов int ко float (int) 0 == (float) 0.0
Юличка Уровень 32
22 мая 2021
тут видимо просто надо запомнить...
Mary Ink Уровень 25
4 мая 2021
Очень хотелось бы увидеть объяснение того, что такое 1.0f, например. Исходя из учебника Шилдта, такое обозначение называется литералом, а буква f означает тип float. То же самое можно проделать, например, с типом double.
SeregaInTheGame Уровень 15
7 апреля 2021
нормас