c# - 无法通过c#代码将小数插入到sql server表中

标签 c# decimal rounding-error

我无法将十进制值插入到 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;

被插入数据库的值被去掉了小数位。更具体地说,如果 fileSizeInMBRounded 是 11.73,则插入数据库的值是 11,00

请帮帮我

感谢期待

最佳答案

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

如果您可以使用 SQL Server Profiler 验证进入您的数据库的 INSERT 的内容,您将更容易确定此类问题是由于您的代码还是 SQL 服务器上的某些原因造成的。

关于c# - 无法通过c#代码将小数插入到sql server表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5858368/

相关文章:

c# - 将字符串转换为十进制 : how to handle the decimal separator in different cultures

c - 矩阵乘法的 sse 精度误差

c++ - 旋转图像会导致 Qt 失真

c# - 在鼠标点击的地方绘制矩形

c# - 无法在将 DataView 实例作为项目源的 WPF 数据网格中显示数据

c# - 突出显示焦点上的文本框服务器控件

JavaScript 舍入在 77.475 和 67.475 上失败

c# - 使用 XmlReader 和 xsd.exe 中的类反序列化 Xml

bash - bash中的浮点除法

java - 正则表达式仅保留特定类型的字母、空格和小数