SQL Serverでは、データをAS Numeric(15,10)
と書くことができます。C#でこれに相当するものは何ですか?
Numeric
に相当するものはDecimal
であることを知っていますが、Numeric(15,10)
を表す方法は?
私が知っている限り、精度/スケールを明示的に指定できる組み込み.NETタイプがないという点で、直接的な同等物はありません。 NUMERICのようなfixed-pointタイプはありません。
decimal
およびdouble
は、.NETの一般的な浮動小数点型であり、decimal
は、 10進浮動小数点 (T-SQLのNUMERICなど)を実装します。 double
実装 バイナリ浮動小数点 動作(T-SQLのFLOATやREALなど)。 (float
もあります。これは、より小さなバイナリ浮動小数点型です。)
表す値に基づいて、decimal
とdouble
のいずれかを選択する必要があります。通常、「人工」の人工的な値(特にお金)はdecimal
、およびdouble
に適切な連続した自然値(物理的寸法など)。
このサイト をデータ型マッピングのガイドとして見てみてください。精度と長さに関しては、 format specifiers を使用して自分で制御できます
2つの質問に応じて2つの答えがあります。
1)精度とスケールを指定できるものは何ですか。なし。これはあなたの質問のようですが、念のため:
2)10進浮動小数点数を指定できるものは何ですかexactly。これは確かにDecimalタイプですが、ポイントは内部にあり、入力数に基づいて2 ^ 32の位置のいずれかに設定されます。理由はわかりませんが、動作する値は28のみ、つまり2 ^ 5-4.です。
したがって、.NetではDecimalをフロートのように見せることができますが、内部では大きく異なり、SQLServerのDecimalと一致します。 2つの値の異なるべきの合計ではないものは、通常のバイナリ浮動小数点を使用した推定です。これは、数値0.1のようなものでさえ、すでに精度が失われていることを意味します。しかし、Decimalタイプではそうではありません。