我收到类型money的sql异常(算术溢出错误)。如何在c#中设置money的最小值和最大值。我的sql类型是money,C#datatype是double。款项范围为(-922,337,203,685,477.5808)至(922,337,203,685,477.5807)。
答案 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
类型,其中包含MinValue
和MaxValue
- 我个人试图避免将实施细节(例如SqlMoney
)泄露到您的但是,域模型。