作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
你的建议是什么:
我目前正在阅读 Fowler .他提到了 Money 类型,它是典型的结构(int、long、BigDecimal),但没有提到策略。
有关资金周转的旧帖子(here 和 here)没有提供我需要的细节和手续。
我在 inet 中发现的想法与“Round half even”有关,这是平衡错误的最佳方式。
感谢您的帮助。
最佳答案
记录财务数据时存在很多舍入问题。第一个问题是能够存储和检索精确的十进制数
如果第一个问题得到解决,则加法(或减法)不会引入任何舍入误差。乘以整数也是如此。
第二个问题,在您能够在不丢失信息的情况下存储和检索数据之后,由于除法(或非整数乘法)导致的舍入误差是预期的。
例如,如果您的货币格式允许 2 位小数,并且您想要存储记录借方余额为 10 到 3 等份的交易,您只能像这样存储
10.00
-3.33
-3.33
-3.33
和
-0.01
(舍入误差)
无论数据类型存储选择如何,这都是预料之中的问题,如果您希望账户平衡,则需要注意这个问题。这种情况主要是由除法(或乘以具有很多有效数字的非整数)引入的。
处理此问题的一种方法是验证您的数据在此类操作后是否平衡,并识别允许的舍入差异而不是错误情况。
编辑:至于引用文献,this one看起来很有趣而且不会太长,并且用有趣的场景吸引了相当多的观众。
关于algorithm - 币密集软处理舍入误差的常用策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2860432/
我是一名优秀的程序员,十分优秀!