Sql server 为什么在使用小数表示货币时建议使用小数点后四位?

Sql server 为什么在使用小数表示货币时建议使用小数点后四位?,sql-server,decimal,currency,money-format,Sql Server,Decimal,Currency,Money Format,在寻找SQL数据类型money和decimal之间的差异时,我发现了几篇文章,其中建议最好使用decimal(19,4)来表示SQL Server中的货币 为什么小数点右边需要四位?我认为只需要两个地方,因为钱是用金钱来表示的 $23.47 $5.00 $4200.50 $23.4700 $5.0000 $4200.5000 我不记得曾经见过金钱被当作 $23.47 $5.00 $4200.50 $23.4700 $5.0000 $4200.5000 第一条也是最重要的规则:使用一个从未

在寻找SQL数据类型money和decimal之间的差异时,我发现了几篇文章,其中建议最好使用
decimal(19,4)
来表示SQL Server中的货币

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

$23.47
$5.00
$4200.50
$23.4700
$5.0000
$4200.5000
我不记得曾经见过金钱被当作

$23.47
$5.00
$4200.50
$23.4700
$5.0000
$4200.5000

第一条也是最重要的规则:使用一个从未使用过的二进制浮点类型

应在什么时候进行精确的舍入可以由法规强制执行,例如,将其替换为两个变量之间的转换


如果没有这样的规则,我将以高精度进行所有计算,并仅为表示而四舍五入,即不使用四舍五入值进行进一步计算。这将产生最佳的整体精度。

仔细阅读银行家舍入法,您将了解其原因。这说明了为什么只存储2个值可能会有问题。在计算利息的金融应用程序中,小数点后4位是标准的。出于实际目的,结果通常会四舍五入到小数点后2位。感谢链接到
银行家四舍五入
。如果我正在编写一个只处理两位小数的应用程序,即:
$25.55
,是否有理由使用四位小数?除了价格x数量=小计和附加销售税之外,应用程序不进行任何计算。您是否检查了应用程序可能具有的合规性要求?可能有些人需要额外的数字。可能的例子是PCI和SOX。我同意您的短语
从不使用二进制浮点类型
,但SQL Server中的
货币
类型不是浮点类型。确实如此。