1

Infinity の値を保持できないため、SQL float が C# Double と同じであるというのは明らかに正しくありません。

私は、確率とリターン期間を扱う非常に単純な数学的モデルを持っています。

いつ

Double Probability = 0d

次に、定義により:

Double ReturnPeriod = Double.PositiveInfinity

これらのプロパティが Insert コマンドの float パラメーターにマップされている場合、プロシージャを実行しようとすると、DataService レベルでエラーが発生します。

着信表形式データ ストリーム (TDS) リモート プロシージャ コール (RPC) プロトコル ストリームが正しくありません。パラメータ 134 ("@RETURNPERIOD"): 指定された値は、データ型 float の有効なインスタンスではありません。ソース データに無効な値がないか確認してください。無効な値の例は、位取りが精度より大きい数値型のデータです。

どうすればこれを解決できますか? ReturnPeriods の文字列表現を格納するようにスキーマを変更したり、+Inf、-Inf、NaN のいずれであるかを格納するために単一の float ごとに 2 番目の列を追加したりするなど、ばかげたことに頼りたくありません。

このような 2006 年の古い投稿は、あまり役に立ちません。

4

1 に答える 1

2

SQL float が Double と同等であると彼らが言っているのは、それらの表現が似ているということだと思います (mantis と指数と 64 ビット エンコーディングを使用)。

Double.MaxValue を正の無限大として、Double.MinValue を負の無限大として使用することをお勧めします。モデルでこれらの値を使用できるとは思えません。

于 2012-05-16T20:24:12.320 に答える