日期:2014-05-17  浏览次数:21278 次

如何取消数据库库里decimal类型默认的四舍五入
如题,要取消掉数据库库里decimal类型默认的四舍五入。

如:存进去的是12.34 ,最后把该列求和出来的数值为 34.24(用sum求的和) ,都是decimal(18,2)类型,精度位数都给了,但最后显示的还是四舍五入的结果34。如何显示完整的,不要四舍五入之后的结果。

round方法也试了,还是不行。
------最佳解决方案--------------------
试试如下的写法,特别是最后那个 Convert.ToDecimal完全多余。
cmd.Parameters.Add("@..", SqlDbType.Decimal).Scale = 2;
cmd.Parameters["@.."].Direction = ParameterDirection.Output;
Decimal sumMoney = (Decimal)cmd.Parameters["@.."].Value;
------其他解决方案--------------------
你是什么数据库?我从未发现这种自动四舍五入的现象,难道是你取出来后到实体类的时候,用int类型的属性加载了它?
------其他解决方案--------------------
decimal是数据类型.18位.没有小数位     .....................
------其他解决方案--------------------
引用:
你是什么数据库?我从未发现这种自动四舍五入的现象,难道是你取出来后到实体类的时候,用int类型的属性加载了它?


最后显示的是 34.00

数据库是sqlserver2008
------其他解决方案--------------------

sql 2012没发现有什么问题
是否可以把问题描述详细一点?什么时候变成 34.00 四舍五入的?sql求sum的时候?还是在C#代码里面呢?
------其他解决方案--------------------
引用:
sql 2012没发现有什么问题
是否可以把问题描述详细一点?什么时候变成 34.00 四舍五入的?sql求sum的时候?还是在C#代码里面呢?



哦,数据库里没问题,是在C#代码里。
------其他解决方案--------------------
取出的时候  保留两位没有?
------其他解决方案--------------------
如:存进去的是12.34 ,最后把该列求和出来的数值为 34.24(用sum求的和) ,都是decimal(18,2)类型,精度位数都给了,但最后显示的还是四舍五入的结果34。如何显示完整的,不要四舍五入之后的结果。



看你这描述 。应该不是四舍五入 。 你是不是没有保留两位。  默认输出的。
------其他解决方案--------------------
引用:
引用:sql 2012没发现有什么问题
是否可以把问题描述详细一点?什么时候变成 34.00 四舍五入的?sql求sum的时候?还是在C#代码里面呢?


哦,数据库里没问题,是在C#代码里。

C#里面是如何取值的呢?
C#里面也有decimal哦

            SqlDataReader sdr;
            decimal d = sdr.GetDecimal(0);
------其他解决方案--------------------
引用:
引用:
引用:sql 2012没发现有什么问题
是否可以把问题描述详细一点?什么时候变成 34.00 四舍五入的?sql求sum的时候?还是在C#代码里面呢?


哦,数据库里没问题,是在C#代码里。
C#里面是如何取值的呢?
C#里面也有decimal哦

            SqlDataReade……




用cmd.Parameters取的,不能用这个么?
------其他解决方案--------------------
引用:
引用:引用:
引用:sql 2012没发现有什么问题
是否可以把问题描述详细一点?什么时候变成 34.00 四舍五入的?sql求sum的时候?还是在C#代码里面呢?


哦,数据库里没问题,是在C#代码里。
C#里面是如何取值的呢?
C#里面也有dec……

cmd.Parameters是设置sql或存储过程参数用的啊,
除非这个参数是个out参数,才能用这个取值。
------其他解决方案--------------------
引用:
引用:
引用:sql 2012没发现有什么问题
是否可以把问题描述详细一点?什么时候变成 34.00 四舍五入的?sql求sum的时候?还是在C#代码里面呢?


哦,数据库里没问题,是在C#代码里。