Деление чисел C++ для начинающих. Округление числа

Сайт не является учебником по программированию. Это только небольшой авторский сборник информации в помощь начинающим программистам.

В C++ часто требуются разные вычисления. Я уже писал об этом там: арифметика в borland c++ 3.1. Когда писал об арифметике, не знал одного момента. Я не знал, как округлить число.

Округлить число в C++ можно так:

Вот так легко округляется число до определенного числа знаков после запятой.
Маленькое, но очень полезное для начинающих познание.

Для округления числа достаточно подключить директивой #iostream файл математических возможностей: "math.h" и использовать какую-то функцию: ceil или floor.

В скобках указывается то значение, которое необходимо округлить. Мною округляется 11/3.0 .
Это округляемое значение умножается на 100, чтобы позднее доокруглить до сотых.

ceil округлил (100 * (11/3.0)).
И этот округленный результат, в свою очередь, делится на 100, чтобы округлить до сотых.

Обратите внимание, что делитель указан как 100.0, а не 100. Это, чтобы случайно не получить целое число, в котором отброшено то, что после запятой (точки).

Та же запись, что и выше, но, для наглядности начинающим, может очень пригодится

================
Было рассмотрено стандартное округление, которое знакомо нам со школы. Но есть и другие виды округлений:

1) Округление до наименьшего целого, не меньше чем округляемое число:
ceil(x) x — это наше число
ceil(5.01); Результат округления 6
ceil(5.9); Результат округления 6

2) Округление до наибольшего целого, не больше чем округляемое число
floor(x) — x это наше число
функция floor(x) округляет число до наибольшего целого.

Все комментарии на сайте проверяются, поэтому ваш комментарий может появиться не сразу. Для вставки кода в комментарий используйте теги: [php]ВАШ_КОД[/php]

7 комментариев: Деление чисел C++ для начинающих. Округление числа

  • Иван говорит:

    Здравствуйте!
    <> — это правильно!

    <> — это неправильно!
    Целое число, если позволяет его величина, вы можете округлить до единиц,десятков,сотен и так далее.
    До десятых, сотых, тысячных, и так далее вы можете округлить дробную часть числа.
    Результат, который получается после операции x=floor(7/3); — это целое число (=2)
    После вы делите это целое число на 100, и ничего более.Это не округление, — это обычное деление.

    За сайт — спасибо!

  • Иван говорит:

    Округление произошло, когда вы применили floor() , как вы написали — 2) Округление до наибольшего целого, не больше чем округляемое число. Но функция floor(x) НЕ отбрасывает дробную часть.Пример floor(-7.3)=-8. Если бы мы отбрасывали дробную часть, то было бы -7,что неправильно. Это округление в меньшую сторону (floor, с английского — пол, дно,минимальный уровень)
    Округление также произошло, когда вы применили ceil()) , как вы написали — 1) Округление до наименьшего целого, не меньше чем округляемое число.Это округление в большую сторону(ceil, с английского — перекрывать, покрывать,(потолок))

    Автор сайта отвечает:
    Спасибо. Косяк исправлен.

    Во втором примере cout<<x; не лишнее?

    Автор сайта отвечает:
    да, было лишним

  • Аноним говорит:

    Написать программу по С++. Задача такое!
    Библиотечная функция islower() принимает качестве аргумента один символ (букву) и возвращает ненулевое целое значение в том случае, если буква является строчной, и нулевое, если буква является заглавной. Написать программу, которая принмает букву от пользователя, а затем выводит нулевое или ненулевое значение в зависимости от того, является ли буква строчной или нет.

    Автор сайта отвечает:
    есть замечательные форумы
    http://www.cyberforum.ru/cpp-beginners/
    http://forum.vingrad.ru/forum/C++C.html
    http://forum.sources.ru/index.php?showforum=2
    и другие иже с ними
    ==============
    Там такие задачи чуть ли не каждый день решают. Если вы хотите учиться и ищите знаний — вы попали туда, если вы хотите, чтобы все вам за вас делали — удачи.

  • Никита говорит:

    Задача A-Сумма 3 чисел.

    Задача A

    Ограничение времени: 1 с
    Ограничение памяти: 64 M
    На стандартном потоке ввода задаются 3 целых числа, не меньшие -32000 и не большие 32000. На стандартный поток вывода напечатайте сумму этих чисел.

    Это первая задача в 2010 г. Удачи!

    Примеры

    Входные данные Результат работы
    1 2 2
    5

  • Yayayaya говорит:

    А переменную x ненадо объявлять?

    Автор сайта отвечает:
    вы о чем?

  • Максим говорит:

    как округление для внутренних рассчётов ваш пример корректен (например показать как быстро нарастала бы ошибка в вычислениях за счёт округлений)

    но действительные типы не содержат красисывые 10-тиричные числа, там идёт дополнительное округление. если нужно вывести на экран конкрентое число десятичных знаков, то нужно использовать форматированный вывод и всё.

  • Алексей говорит:

    int main ()
    {
    clrscr();
    double a=10,b=3; //ТИП НЕ INT
    cout<<ceil(100*(a/b))/100.0; //Присваиваем в x число равное a/b и округляем его до сотых
    getch(); //Ожидаем нажатие любой клавиши
    return 0; //Заканчиваем программу и выходим из функции
    }

    При делении 10 на 3 ответ 3,34, а обычный калькулятор выдает 3,33. Почему так?
    p.s. Спасибо за Ваш сайт!

    Автор сайта отвечает:
    некоторое время сайт не работал(
    Вам нужно прочитать про округления. Они разные бывают. Мы со школы привыкли к округлению где привязка идет к 5 десятым, но ceil немного по другому округляет. ceil округляет до ближайшего равного или большего числа.
    т.е. округление 3.01 до десятых даст 3,1 (потому как 3.0<3.01, а округление идет только до равного или большего числа). Так сказать: "Округление наперед". ceil захватывает только и только впереди идущее число.

Добавить комментарий

Ваш e-mail не будет опубликован.

Поиск

 
     

Яндекс.Метрика

НАГРАДИ АВТОРА САЙТА
WEBMONEY
R375024497470
U251140483387
Z301246203264
E149319127674

Демотиватор наполовину пуст, наполовину полон

Выражаю свою признательность

  • Максиму очень признателен за указание на мои ошибки и неточности.
  • Sergio ===> за оказание помощи в исправлении моих ошибок
  • Gen ===> за правильное стремление помочь другим новичкам и выявления моих ошибок