类型货币的算术溢出错误

时间:2013-08-12 09:39:52

标签: c# sql

我收到类型money的sql异常(算术溢出错误)。如何在c#中设置money的最小值和最大值。我的sql类型是money,C#datatype是double。款项范围为(-922,337,203,685,477.5808)至(922,337,203,685,477.5807)。

3 个答案:

答案 0 :(得分:1)

您应该使用decimal进行资金操作。 Decimal - 特定类型,这是您在金钱操纵方面所需要的。因此,如果您拥有精确正确的结果非常重要 - 请使用它。否则 - 双倍就可以了。


加倍(System.Double)±5.0 x 10-324至±1.7 x 10308,含有15或16位有效数字
十进制(System.Decimal)±1.0 x 10-28至±7.9 x 1028,有28或29位有效数字

答案 1 :(得分:0)

请勿在C#中使用双倍小数作为货币表示。

答案 2 :(得分:0)

改用decimal;如果你特别想设置最小/最大值,那么:

const decimal Min = -922337203685477.5808M, Max = 922337203685477.5807M;

个人而言,我建议过多地使用min / max。在这些情况下,null可能比实际值更清晰。

或者,有System.Data.SqlTypes.SqlMoney类型,其中包含MinValueMaxValue - 我个人试图避免将实施细节(例如SqlMoney)泄露到您的但是,域模型。