SQL serverのnumeric型に小数を登録すると0になる


c#のプログラムでdouble型変数を用いて演算を行い、SQL serverのnumeric(12,3)の型のカラムに登録したら0になってしまいました。

実際の演算式は下記で999999999.999-999999999.998  
答えは0.001となっています。

この答えをオラクルnumber(12,3)に登録すると0.001になりましたがSQL serverに登録したら0になってしまったのです。

登録時のパラメーターのマッピング方法がが間違っているのでしょうか。




[SQL Serverのnumeric型](https://docs.microsoft.com/ja-jp/sql/t-sql/data-
types/decimal-and-numeric-transact-sql?view=sql-server-
ver15)は精度を指定しなかった場合、`numeric(18,0)`となります。scale=0ですので整数しか扱えません。たぶんこれが原因です。

質問文にはC#からSQL
Serverにどのような方法でデータを渡したのかが言及されていませんが、渡す際に精度が指定されていなかったのだろうと推測します。例えばC#の`decimal`（.NETの`System.Decimal`）を精度ヒント無しで自動変換した、とか。

