3

我收到金钱类型的 sql 异常(算术溢出错误)。如何在 c# 中设置金钱的最小值和最大值。我的 sql 类型是金钱,而 C# 数据类型是 double。货币范围是 (-922,337,203,685,477.5808) 到 (922,337,203,685,477.5807)。

4

3 回答 3

1

您应该使用小数进行货币操作。 十进制- 特定类型,这是您在资金操纵方面所需要的。因此,如果获得精确正确的结果对您很重要 - 请使用它。否则 - 双倍很好。


精度(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 个有效数字

于 2013-08-12T09:43:52.023 回答
0

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

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

不过,就个人而言,我建议不要过多地弄乱最小值/最大值。在这些情况下, Anull可能比实际值更清晰。

或者,有一种System.Data.SqlTypes.SqlMoney类型,它具有MinValue并且MaxValue- 我个人会尽量避免将实现细节(例如SqlMoney)泄漏到您的域模型中。

于 2013-08-12T09:44:23.873 回答
0

不要使用双精度 - 在 C# 中使用小数表示货币。

于 2013-08-12T09:43:07.520 回答