c++ - 将货币金额四舍五入到最接近的五分之一、四分之一、1 美元、5 美元等面额的最佳方法是什么?

标签 c++ sql algorithm rounding informix

加拿大宣布他们将不再类型转换便士,美国财政部也在强烈考虑效仿!这意味着货币金额必须四舍五入到最接近的五分之一,因此需要大量的程序修改!..在当铺业务中,我们一直在将贷款金额四舍五入到最接近的 5 美元面额,例如50、55、60.. 当计算出的贷款介于 50 美元和 100 美元之间时,面额超过 100 美元的最接近的 10 美元,等等。这是为了尽量减少使用较小面额的钞票的常见做法。那么什么是四舍五入到最接近的所需面额的好算法?

在 SQL 中,我可以创建一个用户定义的数据类型以舍入到 n 面额,还是最好保留 decimal(8,2) 数据类型并使用函数舍入?

最佳答案

假设您的数字类似于:44.32,那么您需要做的就是(这是伪代码,在 c++ 中的实现应该很简单):

findmod = (num_to_be_changed*100)%5
if findmod <= 2
  new_num = num_to_be_changed - findmod
else 
  new_num = num_to_be_changed +  (5 - findmod)
end
new_num = new_num/100

关于c++ - 将货币金额四舍五入到最接近的五分之一、四分之一、1 美元、5 美元等面额的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9952643/

相关文章:

c++ - 使用 vector 迭代器遇到的错误

c++ - 以模板化容器作为参数的模板函数 - 奇怪的拼写错误

mysql - 我怎样才能计算总结果并将它们分组?

algorithm - 组成员模式

C:两种不同的二分搜索实现,一种陷入死循环

c - 仅使用 For 循环反转字符串

c++ - 试图访问一个类的私有(private)成员以解决重载是否是不正确的?

c++ - 调用返回右值引用的函数

sql - 我可以在SQL Server中创建创建全局函数吗?

php - 检查 Joomla php 函数中是否存在查询结果?