【发布时间】:2014-04-16 02:17:31
【问题描述】:
存储成本计算值的首选数据类型是什么?金钱或小数 什么是程序化差异赌注? 用于货币数据类型的 asp.net 模型的 asp.net 数据注释?
【问题讨论】:
标签: sql sql-server decimal sqldatatypes currency
存储成本计算值的首选数据类型是什么?金钱或小数 什么是程序化差异赌注? 用于货币数据类型的 asp.net 模型的 asp.net 数据注释?
【问题讨论】:
标签: sql sql-server decimal sqldatatypes currency
您应该更喜欢decimal,因为money 数据类型不精确。
您也可以查看 Aaron Bertrand 的 Performance / Storage Comparisons : MONEY vs. DECIMAL
【讨论】:
money 可以完全满足他们的需要。
Decimal 类型提供更高的精度来保存中间结果以获得您期望的结果。
money 数据类型的缺点:
它是专有的,所以移植它很痛苦。它是几十年前的众多“Sybase 代码博物馆”功能之一。还记得 UNIX 的早期版本吗?
当你不需要让说方言的人听起来像乡巴佬时,用方言编写代码。你最好使用 DECIMAL(s,p),这样你就可以使用适当大小的列。
它确实在后端显示和格式化,带有逗号和美元符号。这违背了分层架构的目的。
MONEY 数据类型存在舍入错误。
参考:msdn
【讨论】:
money 乘以或除以money,它只会出现“舍入错误”,这当然是荒谬的。如果money 乘以/除以适当的类型,导致表达式提升为任意精度,则根本没有问题。