web-dev-qa-db-ja.com

C#のSQL Server Numericと同等のデータ型は何ですか

SQL Serverでは、データをAS Numeric(15,10)と書くことができます。C#でこれに相当するものは何ですか?

Numericに相当するものはDecimalであることを知っていますが、Numeric(15,10)を表す方法は?

43
mcUser

私が知っている限り、精度/スケールを明示的に指定できる組み込み.NETタイプがないという点で、直接的な同等物はありません。 NUMERICのようなfixed-pointタイプはありません。

decimalおよびdoubleは、.NETの一般的な浮動小数点型であり、decimalは、 10進浮動小数点 (T-SQLのNUMERICなど)を実装します。 double実装 バイナリ浮動小数点 動作(T-SQLのFLOATやREALなど)。 (floatもあります。これは、より小さなバイナリ浮動小数点型です。)

表す値に基づいて、decimaldoubleのいずれかを選択する必要があります。通常、「人工」の人工的な値(特にお金)はdecimal、およびdoubleに適切な連続した自然値(物理的寸法など)。

63
Jon Skeet

このサイト をデータ型マッピングのガイドとして見てみてください。精度と長さに関しては、 format specifiers を使用して自分で制御できます

11
Icemanind

2つの質問に応じて2つの答えがあります。

1)精度とスケールを指定できるものは何ですか。なし。これはあなたの質問のようですが、念のため:

2)10進浮動小数点数を指定できるものは何ですかexactly。これは確かにDecimalタイプですが、ポイントは内部にあり、入力数に基づいて2 ^ 32の位置のいずれかに設定されます。理由はわかりませんが、動作する値は28のみ、つまり2 ^ 5-4.です。

したがって、.NetではDecimalをフロートのように見せることができますが、内部では大きく異なり、SQLServerのDecimalと一致します。 2つの値の異なるべきの合計ではないものは、通常のバイナリ浮動小数点を使用した推定です。これは、数値0.1のようなものでさえ、すでに精度が失われていることを意味します。しかし、Decimalタイプではそうではありません。

0
Gerard ONeill