sql server - c#中的十进制四舍五入

本文关键字:十进制 四舍五入 server sql | 更新日期: 2023-09-27 18:01:58

我有代码,从数据库获取信息插入到列表中。我所获取的一项数据将用于定价。(我在SQL Server中将其类型设置为十进制),例如:" 1,80"。

但是当我选择它时,我的十进制变量返回值2 !

我想知道是否有一种简单的方法使小数不自动舍入。

这是代码:

public decimal preco { get; set; } 
while (dr.Read())
{
    clsCaProd oProd = new clsCaProd();
    oProd.cod = dr.GetInt32(0);
    oProd.preco = dr.GetDecimal(1); // Here returns "2" instead of "1,80"
    oProd.info = dr.GetString(2);
    oProd.categ = dr.GetString(3);
    oProd.nome = dr.GetString(4);
    lProd.Add(oProd);
}

sql server - c#中的十进制四舍五入

如果将列声明为decimal,则默认的"scale"为零。您需要指定精度和比例。

试试这个例子:

declare @d1 decimal = 1.80
declare @d2 decimal(19,4) = 1.80
select @d1, @d2;

结果:

2        1.8000