在货币数据库中存储货币价值的最佳方法是什么?

nto*_*ela 27 c# sql t-sql currency

我需要在数据库中存储几个与钱相关的字段,但我不确定在moneydecimal之间使用哪种数据类型.

Rad*_*Rad 40

十进制和金钱应该是非常可靠的.我可以向你保证(从继承应用程序的痛苦个人经验)是不要使用浮动!

  • 浮点数会导致非常细微的舍入误差,尤其是在使用大量数字进行计算时.对于财务应用程序,这会导致数字无法平衡 (19认同)
  • 为什么不?您在使用 float 时遇到了什么问题? (2认同)
  • 他的申请可能总计达到了200,000的金额并且已经没有数字了 (2认同)
  • 尽管您的数据库可能支持 DECIMAL 的准确性,但您的编程语言可能不支持,这一点毫无意义。例如,PHP 将使用 float 并破坏一切。在这种情况下,您可能想要使用 INTEGER。 (2认同)

Fre*_*els 14

我总是使用十进制; 从来没有用过MONEY.

最近,我在Sql server中发现了一篇关于十进制与货币数据类型的文章,你可能会觉得有趣:

金钱与十进制

当您使用它执行计算时,money数据类型似乎并不总能产生准确的结果:单击

我过去所做的是使用INT字段,并以美分(欧元/美元)存储金额.


Mar*_*ell 11

我想这归结为精度和规模.IIRC,money是4dp.如果没问题,money表达你的意图.如果您想要更多控制,请使用decimal特定的精度和比例.