我有一个基于Informix-SQL的Pawnshop应用程序,它根据黄金的重量和纯度计算出应该向客户借多少钱的估算。典当行借出的最低金额为5.00美元。典当行员工通常会提供以5或0结尾的金额。例如:10,15,20,100,110,125等。他们这样做是为了不会遇到1.00美元钞票的短缺问题。因此,如果我的系统计算贷款应该是:12.49美元,然后将其四舍五入到10美元,12.50美元到15.00美元,13.00美元到15.00美元,17.50美元到20.00美元等等!如果需要,员工可以随时覆盖舍入金额。是否有可能在执行屏幕的指令部分完成此操作,或者我是否必须编写一个cfunc并从执行内部调用它?..是否有任何C库函数执行货币值的间隔舍入?...另一个注意事项,我认为美国政府应该停止使用便士,这样企业可以将数量增加到最近的镍,这将节省我们口袋里的大量时间和重量!
答案 0 :(得分:8)
我只是将5除以圆为适当的整数,然后乘以5。
可能有一种更简单的方法,但这样可行。
答案 1 :(得分:3)
C函数round
和亲戚会做你所要求的。
float in_fives = roundf( exact_change / 5. ) * 5.;
还有rint
,你可以避免,因为它不能保证正确地绕12.50美元。