1

显然,SQL 浮点数与 C# Doubles 相同并不完全正确,因为它们不能保存 Infinity 的值。

我有一个非常简单的数学模型来处理概率和回报期。

什么时候

Double Probability = 0d,

然后根据定义:

Double ReturnPeriod = Double.PositiveInfinity

当这些属性映射到插入命令的浮点参数时,我在尝试执行该过程时在 DataService 级别收到错误:

传入的表格数据流 (TDS) 远程过程调用 (RPC) 协议流不正确。参数 134 ("@RETURNPERIOD"):提供的值不是浮点数据类型的有效实例。检查源数据中的无效值。无效值的一个示例是小数位数大于精度的数值类型数据。

我该如何解决这个问题?我不想诉诸于任何荒谬的事情,例如更改架构以存储 ReturnPeriods 的字符串表示,或者为每个浮点添加辅助列以存储它是 +Inf、-Inf 还是 NaN。

像这样的2006 年旧帖子并没有真正帮助我。

4

1 回答 1

2

我认为当他们说 SQL 浮点数等同于 Double 时,它​​们的表示是相似的(使用螳螂和指数以及 64 位编码)。

我建议将 Double.MaxValue 用作正无穷,将 Double.MinValue 用作负无穷。我怀疑您是否会在模型中使用这些值。

于 2012-05-16T20:24:12.320 回答