十进制与货币数据类型

use*_*981 4 sql sql-server-2008

Money数据类型已用于表中的VendorHours, OverTime,Expenses之类的列。

我正在设计另一个与同一个表相关的表,并将具有类似的列,但我正在考虑使用decimal数据类型而不是money小数更精确。

后来我发现正在使用货币数据类型,因为它需要 8 个字节,而十进制将使用 10 表示 10-19 精度。

像访问时间、加班时间这样的列将适合精度为 9 的十进制,并且只需要 5 个字节。那么使用decimal(9,2)而不是money是个好主意吗?

我将对报告存储过程中的这些字段进行大量计算。

Kum*_*PMP 5

这取决于......如果你不打算对这些值做任何事情而不是增加或减少......没问题。如果您要执行其他任何操作(例如乘法或除法),则至少需要保留 4 位小数才能进行计算,而不会降低整体精度。

MONEY更准确地表示现实世界的情况,其中每个值都按照计算四舍五入到最接近的分,然后再次四舍五入平均值。在很长的计算链中,差异可能会远远大于一分……但由于所有中间值都包含非小数分的业务逻辑约束,MONEY结果将是准确的,而“更精确”DECIMAL将不会。