C# 货币vs.十进制vs.浮动性能问题(货币值的SQL数据类型)?

C# 货币vs.十进制vs.浮动性能问题(货币值的SQL数据类型)?,c#,sql-server,C#,Sql Server,如果SQL server中有“货币值”列,则应选择什么数据类型。我在网上阅读了一些关于客户实现的内容,我们发现了一些关于货币数据类型的有趣的性能数据。例如,当Analysis Services设置为货币数据类型(从double)以匹配SQL Server货币数据类型时,处理速度(行/秒)提高了13%。这是真的吗 如果SQL server中有“货币值”列,则应选择什么数据类型 我总是选择十进制,除非有充分的理由不这样做浮点是不合适的,因为并不是所有的十进制值都可以精确表示,并且最终会产生奇怪的工件

如果SQL server中有“货币值”列,则应选择什么数据类型。我在网上阅读了一些关于客户实现的内容,我们发现了一些关于货币数据类型的有趣的性能数据。例如,当Analysis Services设置为货币数据类型(从double)以匹配SQL Server货币数据类型时,处理速度(行/秒)提高了13%。这是真的吗

如果SQL server中有“货币值”列,则应选择什么数据类型

我总是选择十进制,除非有充分的理由不这样做<代码>浮点是不合适的,因为并不是所有的十进制值都可以精确表示,并且最终会产生奇怪的工件(例如,您将有一个
48.150000000000000135

money
通常是不合适的,因为它具有固定的精度和刻度,可能与您的实际需求不匹配。它对每个中间结果以及最终结果进行四舍五入,这可能不适用于复杂的计算。使用
decimal
计算,您可以更好地控制何时进行舍入(通过以较小的精度转换为
decimal

如果SQL server中有“货币值”列,则应选择什么数据类型

我总是选择十进制,除非有充分的理由不这样做<代码>浮点是不合适的,因为并不是所有的十进制值都可以精确表示,并且最终会产生奇怪的工件(例如,您将有一个
48.150000000000000135


money
通常是不合适的,因为它具有固定的精度和刻度,可能与您的实际需求不匹配。它对每个中间结果以及最终结果进行四舍五入,这可能不适用于复杂的计算。使用
decimal
计算,您可以更好地控制何时进行四舍五入(通过以较小的精度转换为
decimal

应根据您的业务需求选择数据类型。什么是“it”?基本上,对于测量中的任何设计差异,你们可以创建实验来证明它是正确的:)为什么要考虑需求??每个人都需要其应用程序的最佳性能。我想在数据库中保存货币。这是我的要求。@urzshah,谢谢你有趣的短语“为什么要考虑要求?每个人都需要其应用程序的最佳性能”。但实际上,大多数人首先关心的是代码是否正确工作,其次是是否足够快。而且只需担心最佳性能,因为它的成本通常远远高于足够快的速度。应根据您的业务需求选择数据类型。什么是“it”是正确的?基本上,对于测量中的任何设计差异,你们可以创建实验来证明它是正确的:)为什么要考虑需求??每个人都需要其应用程序的最佳性能。我想在数据库中保存货币。这是我的要求。@urzshah,谢谢你有趣的短语“为什么要考虑要求?每个人都需要其应用程序的最佳性能”。但实际上,大多数人首先关心的是代码是否正确工作,其次是是否足够快。而且只需担心最好的性能,因为它的成本通常远远超过足够快的速度。