12

固定小数点データ型には多くの用途があるようです。.NET にないのはなぜですか?

注:固定小数点の目的とニーズに合わせて独自のクラス/構造体を作成できることを理解しています。それは私の質問ではありません。MS が固定小数点数値データ型を含めないことにした理由を知りたいです。

4

3 に答える 3

12

System.Data.SqlTypes.SqlDecimalあなたはあまり知られていないクラスを探しています。

于 2011-02-21T18:37:24.070 に答える
7

Decimal(base-10 浮動小数点) で十分であると見なされました。

于 2011-02-21T18:29:58.250 に答える
6

問題の 1 つは、おそらく次の質問に関係しています: どこで問題を解決しますか? .NET の型は、型以外の引数でパラメーター化できないため、FixedNum<18,6>単純に不可能です。そして、、、、、、などを作成FixedNum1x0したくありません。FixedNum1x1FixedNum2x0FixedNum2x1FixedNum2x2

値だけでなく、固定小数点型をパラメーター化できる必要があります。これは、間違いを追跡することがほぼ不可能になるためです。

FixedNum f() { return new FixedNum(1, decimals: 2); }

FixedNum x = new FixedNum(1, decimals: 0);
...
x = f(); // precision of x increased.

したがって、ローカル変数ではないものから固定小数点値を取得するたびに、固定小数点値をチェックして制約する必要があります。decimal固定のスケールまたは精度が必要な場合と同様です。

つまり、.NET 型システムの制限により、decimal既に上記の FixedNum クラスの組み込み実装になっています。

于 2011-02-21T18:46:40.013 に答える