无法通过c#代码将十进制数插入sql server表

Sre*_*ree 5 c# rounding-error decimal

我无法在Sql Server表中插入十进制值.

我想要做的是通过这些代码行自我解释:

long fileSizeInBytes = ComponentUploadControl.FileContent.Length;
Decimal fileSizeInMB = Convert.ToDecimal(fileSizeInBytes) / (1024.0m * 1024.0m);
Decimal fileSizeInMBRounded = Math.Round(fileSizeInMB, 2);
cmd.Parameters.Add("@fileSize", SqlDbType.Decimal).Value = fileSizeInMBRounded;
Run Code Online (Sandbox Code Playgroud)

插入到数据库中的值将被删除小数位.更具体地说,如果fileSizeInMBRounded是11.73,则插入到数据库中的值是11,00

请帮我

谢谢你的期待

pse*_*der 9

我怀疑你的十进制字段在SQL中设置错误.你想要的是一个decimal(18,2)允许2位小数的字段.我怀疑你将该字段声明为decimal(18,0)(默认值),不允许任何小数位.

如果您可以使用SQL Server Profiler来验证进入数据库的INSERT的内容,那么您可以更轻松地确定此类问题是由于您的代码还是SQL服务器上的某些问题.