当我添加值到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));
根据您在这里使用的SqlMetaData构造函数的文档,用于SqlDbType。十进制,Precision的默认值是18,scale的默认值是0。默认情况下,它不会存储小数点之后的内容。您将需要使用允许您设置这里描述的精度和比例的构造函数。
public SqlMetaData(
string name,
SqlDbType dbType,
byte precision,
byte scale
)