IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Какая-то ошибка., С++
сообщение
Сообщение #1


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Как обычно, не знаю как назвать тему wacko.gif
Не мог в программе найти ошибку. Уже построчно проверял. Пришел к таким выводам: или при присвоении числу float числа int оно округляется, чего не может быть в теории, или не правильно printf выводит число float.
Проблема оказалась в том, что результат от таких действий 1/2 или 3/4 или 5/3 округлялся. Для получения правильного результата надо писать 1.0/2.0 и 3.0/4.0 и 5.0/3.0. Объясните, пожалуйста, в чем прикол такой записи и обязательно ли за этим следить?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Цитата
Объясните, пожалуйста, в чем прикол такой записи и обязательно ли за этим следить?
Прикол в том, что в С/С++ тип результата при делении совпадает с типом более емкого операнда (в отличие от Паскаля, где деление всегда возвращает вещественный результат). То есть, если ты с Сях делишь целое на целое - то в результате выполняется именно целочисленное деление, и частное тоже будет целым. Для того, чтобы получить вещественное число, достаточно привести либо делимое либо делитель к вещественному (оба сразу - можно, но не обязательно):

// можно так, задавая константы вещественного типа:
double res_1 = 1.0 / 2;
// можно - вот так (приведение типов в стиле С):
double res_2 = (double)1 / 2;
// можно сделать то же самое, но в стиле С++:
double res_3 = static_cast<double>(1) / 2;
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 29.04.2025 8:18
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name