Как я могу округлить денежные значения до ближайшего интервала в 5,00 $? - PullRequest
3 голосов
/ 28 марта 2010

У меня есть приложение Pawnshop на основе Informix-SQL, которое вычисляет оценку того, сколько денег нужно одолжить клиенту, исходя из веса и чистоты золота. Минимальный размер кредита в ломбарде - 5 долларов. Сотрудник ломбарда обычно предоставляет кредиты на суммы, которые заканчиваются цифрами 5 или 0. Например: 10, 15, 20, 100, 110, 125 и т. Д. Они делают это, чтобы не столкнуться с проблемами нехватки при счетах в 1 доллар. Так, если, например, моя система рассчитывает, что ссуда должна быть: 12,49 долл., Затем округлить ее до 10, 12,50–15,00 долл., 13,00–15,00 долл., 17,50–20,00 долл. И т. Д. Можно ли сделать это в разделе инструкций экрана выполнения или мне нужно написать cfunc и вызвать его изнутри выполнения? .. Существуют ли какие-либо функции библиотеки C, которые выполняют интервальное округление денежных значений? .. На другом примечании Я думаю, что правительство США должно прекратить использование пенни, чтобы предприятия могли округлять суммы до ближайшего никеля, это сэкономило бы столько времени и веса в наших карманах!

Ответы [ 2 ]

8 голосов
/ 28 марта 2010

Я бы просто разделил на 5, округлил до нужного целого числа и умножил бы на 5.

Возможно, есть более простой способ, но он сработает.

3 голосов
/ 28 марта 2010

Функция C round и родственники будут делать то, что вы просите.

float in_fives = roundf( exact_change / 5. ) * 5.;

Существует также rint, которого вы могли бы избежать, поскольку не гарантируется правильное округление $ 12.50.

...