当我添加值到SqlDataRecord数字是四舍五入

本文关键字:数字 四舍五入 SqlDataRecord 添加 | 更新日期: 2023-09-27 18:16:53

当我添加一个值到我的SqlDataRecord一些如何它是圆的值。我不确定是什么原因造成的。

EDIT: John说得很好,遗漏了dm的属性类型是"decimal?"

TotalCount = 2.5245332200983
SqlDataRecord rec = new SqlDataRecord(
                new SqlMetaData("TotalCount", SqlDbType.Decimal));
rec.SetNullableDecimal(0,dm.TotalCount);
When it is written to the DB it is showing 3.0000000000000

添加了数据库类型,因此我可以传递TVP:

CREATE TYPE dbo.TestCount AS TABLE(
TotalCounts decimal(38,20) NULL
);

数据库表:

CREATE TABLE dbo.TestCountTbl(
TotalCounts                 decimal(38,20) NULL);

我做错了什么?SqlDbType是否错误?

EDIT: Per @user957902我必须添加精度/比例到我的SqlDataRecord....完全说得通…所以我加了这个,效果很好。感谢所有!

SqlDataRecord rec = new SqlDataRecord(
                new SqlMetaData("TotalCount", SqlDbType.Decimal,38,20));

当我添加值到SqlDataRecord数字是四舍五入

根据您在这里使用的SqlMetaData构造函数的文档,用于SqlDbType。十进制,Precision的默认值是18,scale的默认值是0。默认情况下,它不会存储小数点之后的内容。您将需要使用允许您设置这里描述的精度和比例的构造函数。

public SqlMetaData(
    string name,
    SqlDbType dbType,
    byte precision,
    byte scale
)