Давайте в качестве примера рассмотрим реализацию нескольких функций: сложения AddMoney (), деления на число DevideByNumO, сравнения CompareMoney () и вывода на экран Di splayMoney (), чтобы почувствовать специфику работы с денежными суммами. Начнем с функции деления денежной суммы на число. Обычно число — это некоторый коэффициент пересчета денежной суммы (например, для перевода в другую валюту или для начисления процентов в банке), и он всегда положительный. После деления сумму надо округлить.
Удивительно, но в стандартной библиотеке С++ нет простой функции округления вроде round(), поэтому приходится использовать две другие: «округление вниз» floor() и «округление вверх» ceil(). ПРИМЕЧАНИЕ
Чтобы было можно с этими функциями работать, необходимо подключить заголовок
<cmath> или <math.h>.
Первая функция просто отсекает дробную часть или, как говорят, выдает наибольшее целое, меньшее заданного аргумента. Например, floor(2.8) выдает 2. Вторая функция, напротив, увеличивает результат до ближайшего целого, большего, чем аргумент. Например, cei 1(2.1) выдаст 3, так же как и cei 1(2.9). Если надо округлить до целого числа положительное значение переменной v, то это делается следующим образом:
v = (v-floor(v)<9.5)?floor(v):ceil(v);
Эти функции правильно работают и с отрицательными числами: floor(-2.1) выдает -3, а результат cei 1 (-2.9) равен -2. Однако для денежной суммы знак «минус» означает только то, что эта сумма является долгом, поэтому оперировать будем абсолютным значением денежной суммы, а знак учитывать после деления и округления. Текст функции DevideByNumO представлен в листинге 1.3.
Опубликовал Kest
August 13 2013 20:48:08 ·
0 Комментариев ·
7726 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.