【问题标题】:Why are four decimal places suggested when using decimal to represent money?为什么在使用小数表示货币时建议保留四位小数?
【发布时间】:2015-12-07 21:53:00
【问题描述】:

在寻找 SQL 数据类型 money 和 decimal 之间的区别时,我遇到了几篇帖子,其中建议 decimal(19,4) 最适合在 SQL Server 中表示货币

为什么需要小数点右边的四个位?我认为只需要两个地方,因为钱表示为

$23.47
$5.00
$4200.50

我不记得曾经见过用

表示的钱
$23.4700
$5.0000
$4200.5000

【问题讨论】:

  • 阅读银行家的四舍五入你会知道为什么。这是one link,它说明了为什么只存储 2 个值可能会有问题。
  • 4 个小数位是计算利息的金融应用程序的标准。出于实际目的,结果通常会四舍五入到小数点后 2 位。
  • 感谢Bankers Rounding 的链接。如果我正在编写一个只处理两位小数的应用程序,即。 $25.55,有没有理由使用四位小数?除了价格 x 数量 = 小计和额外的销售税之外,该应用程序不进行任何计算。
  • 您是否检查过应用程序可能有什么样的合规性要求?可能有些人想要额外的数字。可能的例子是 PCI 和 SOX。

标签: sql-server decimal currency money-format


【解决方案1】:

第一条也是最重要的规则:使用decimal data type,永远不要使用二进制浮点类型。

何时应进行精确舍入可由法规强制执行,例如将其替换为Euro and national currencies 之间的转换。

如果没有这样的规则,我会以高精度进行所有计算,并且只为演示而舍入,即不使用舍入值进行进一步计算。这应该会产生最佳的整体精度。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2015-03-15
  • 2016-04-20
  • 2011-08-29
  • 2011-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多