嵌套的 iif 语句四舍五入到镍币!会起作用吗?又名便士四舍五入



我在网上搜索了一下,发现很少有人处理这个问题。 我想知道是否有任何更深层次的问题,我不知道以这种方式获得结果。 [总计] 变量表示计算出的总欠款。 PayAmt 代表客户在仅支付现金时将支付的费用。

PayAmt: FormatCurrency(
IIf(Right(Str(Round([total],2)),1)="1",[total]-1,
IIf(Right(Str([total]),1)="2",[total]-2,
IIf(Right(Str([total]),1)="3",[total]+2,
IIf(Right(Str([total]),1)="4",[total]+1,
IIf(Right(Str([total]),1)="6",[total]-1,
IIf(Right(Str([total]),1)="7",[total]-2,
IIf(Right(Str([total]),1)="8",[total]+2,
IIf(Right(Str([total]),1)="9",[total]+1,[total])))))))))/100

从表面上看,这确实给出了预期的结果,我只是不确定我是否应该以这种方式处理这个问题?

0.98 - 1.02 = 1.00

1.03 - 1.07 = 1.05

没有见过这样的事情,我怀疑不可能这么容易。 我只是不知道为什么。

感谢您的任何帮助!

切勿对数字使用字符串处理。

这是一篇关于认真舍入的文章,包括任何值和数据类型的 VBA 的所有必要代码:

将值向上、向下、四舍五入 4/5 或为有效数字

最新更新