记录财务数据时存在许多舍入问题.第一个问题是存储和检索精确十进制数的能力
如果第一个问题被整理出来,那么任何添加(或减法)都不会引入任何舍入错误.乘以整数也是如此.
第二个问题是,在能够存储和检索数据而不丢失信息之后,预期会因为除法(或乘以非整数)而导致舍入错误.
例如,如果您的货币格式允许2位小数,并且您希望存储记录余额的交易,则借记10到3个相等的部分,您只能将其存储为
10.00
-3.33
-3.33
-3.33
Run Code Online (Sandbox Code Playgroud)
和
-0.01
Run Code Online (Sandbox Code Playgroud)
(舍入误差)
无论数据类型存储选择如何,这都是预期会出现的问题,如果您希望帐户保持平衡,则需要注意这一问题.这种情况主要通过除法(或通过乘以具有许多有效数字的非整数)引入.
解决此问题的一种方法是验证您的数据是否在此类操作之后进行平衡,并识别允许的舍入差异而不是错误情况.
编辑:至于参考文献,这个看起来很有趣,而且时间不长,并且涉及到有趣场景的广泛受众.
使用银行家四舍五入。您四舍五入到最接近的两便士。
http://www.xbeat.net/vbspeed/i_BankersRounding.htm
您可以对此进行扩展,以舍入toward最接近的两便士。因此,22.5 舍入为 22,但 23.5 舍入为 24。23.1 和 22.9 都舍入为 23。不过,原始银行家算法更受欢迎。