我有一个带有DECIMAL(10,2)
列的SQL Server表。这应该适合99999999.99
的数字。但是当我通过以下C#代码插入任何数字>= 1000
时,我得到了异常
将数据类型double转换为float时出错。
如果插入的值为< 1000
,则可以正常工作。顺便说一句,C#值是双倍的。
有人可以解释一下吗?
// ...
Database.AddInParameter(cmd, "@AssessmentScaleScore", DbType.Double,
(goal.StudentAssessmentInstanceID > 0
&& goal.AssessmentScaleScore > 0)
? goal.AssessmentScaleScore
: System.Data.SqlTypes.SqlDouble.Null);
// ...
Database.ExecuteDataSet(cmd);
同样,goal.AssessmentScaleScore
是double
,我将其插入数据库中的DECIMAL(10,2)
列。如果值为< 1000
,则可以正常工作,但如果>= 1000
我得到例外。
我不明白。
答案 0 :(得分:0)
对不起,我在这里问了这把枪。
原来我是一个白痴,我的存储过程中的参数将其作为DECIMAL(5,2)而不是像DB列一样的DECIMAL(10,2)。
所以我在程序中溢出了参数,而不是数据库中的列。