gpt4 book ai didi

algorithm - 币密集软处理舍入误差的常用策略?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:27:32 27 4
gpt4 key购买 nike

你的建议是什么:

  1. 补偿 Money 对象集合的批量数学运算中的累积错误。这是如何在您的语言环境的生产代码中实现的?
  2. 理论会计舍入背后的理论。
  3. 关于该主题的任何文献

我目前正在阅读 Fowler .他提到了 Money 类型,它是典型的结构(int、long、BigDecimal),但没有提到策略。

有关资金周转的旧帖子(herehere)没有提供我需要的细节和手续。

我在 inet 中发现的想法与“Round half even”有关,这是平衡错误的最佳方式。

感谢您的帮助。

最佳答案

记录财务数据时存在很多舍入问题。第一个问题是能够存储和检索精确的十进制数

  • 大多数数据库都提供十进制数据类型,您可以在其上指定小数点前后的位数(货币的小数位数也不同,我处理过具有 0、2、3 位小数的货币)
  • 在处理这些数据时,如果您想避免在应用程序端出现任何意外的舍入错误,您可以使用 BCD作为通用方法,或者您可以使用整数来表示任何固定的十进制表示法或混合您自己的

如果第一个问题得到解决,则加法(或减法)不会引入任何舍入误差。乘以整数也是如此。

第二个问题,在您能够在不丢失信息的情况下存储和检索数据之后,由于除法(或非整数乘法)导致的舍入误差是预期的。

例如,如果您的货币格式允许 2 位小数,并且您想要存储记录借方余额为 10 到 3 等份的交易,您只能像这样存储

10.00  
-3.33
-3.33
-3.33

-0.01 

(舍入误差)

无论数据类型存储选择如何,这都是预料之中的问题,如果您希望账户平衡,则需要注意这个问题。这种情况主要是由除法(或乘以具有很多有效数字的非整数)引入的。

处理此问题的一种方法是验证您的数据在此类操作后是否平衡,并识别允许的舍入差异而不是错误情况。

编辑:至于引用文献,this one看起来很有趣而且不会太长,并且用有趣的场景吸引了相当多的观众。

关于algorithm - 币密集软处理舍入误差的常用策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2860432/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com