C# 双精度、浮点或十进制的SqlParameter

C# 双精度、浮点或十进制的SqlParameter,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我有这样一个SqlParameter: SqlParameter parameter3 = new SqlParameter("@StageDaysBehind", SqlDbType.Decimal); parameter3.Value = schedVarSaveClass.StageDaysBehind; parameter3.Direction = ParameterDirection.Input; command.Parameters.Add(parameter3); schedVa

我有这样一个
SqlParameter

SqlParameter parameter3 = new SqlParameter("@StageDaysBehind", SqlDbType.Decimal);
parameter3.Value = schedVarSaveClass.StageDaysBehind;
parameter3.Direction = ParameterDirection.Input;
command.Parameters.Add(parameter3);
schedVarSaveClass.StageDaysBehind
是一个double,其值为2.5,但它作为2插入到数据库中,如何使其作为2.5而不是2插入

我试过这个:

SqlParameter parameter3 = new SqlParameter("@StageDaysBehind", SqlDbType.Decimal);
parameter3.Value = schedVarSaveClass.StageDaysBehind;
parameter3.Precision = 2;
parameter3.Scale = 5;
parameter3.Direction = ParameterDirection.Input;
command.Parameters.Add(parameter3);

仍然不起作用。

考虑改用AddWithValue,如下所示:

 cmd.Parameters.AddWithValue("@FIELD1",yourValue) 

它将更好地处理类型:decimal、float等。

您的参数是一个
SqlDbType.decimal
,但您尚未指定精度和比例。我相信scale默认为
0
,在这种情况下,小数点后没有数字。将
Precision
Scale
属性指定给列
decimal(p,s)
中定义的数据类型中的值。你能把这一点作为答案吗请举个例子,我尝试设置精度和比例,但结果相同,在代码中保存2.5作为2你应该使用精度18,刻度2在没有设置精度和刻度的情况下,我很难用最小的设置重现问题<代码>声明@Temp表([Value][decimal](18,2));插入@Temp值(@StageDaysBehind);从@Temp中选择[Value]将
属性设置为
单值
双值
、或
十进制
值都有效。它选择
2.5
作为
decimal
。您能显示您的插入SQL和表定义吗。实际上,强烈建议不要使用AddWithValue,例如。