如何取消数据库库里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位.没有小数位 .....................
------其他解决方案--------------------
最后显示的是 34.00
数据库是sqlserver2008
------其他解决方案--------------------
sql 2012没发现有什么问题
是否可以把问题描述详细一点?什么时候变成 34.00 四舍五入的?sql求sum的时候?还是在C#代码里面呢?
------其他解决方案--------------------
哦,数据库里没问题,是在C#代码里。
------其他解决方案--------------------取出的时候 保留两位没有?
------其他解决方案--------------------如:存进去的是12.34 ,最后把该列求和出来的数值为 34.24(用sum求的和) ,都是decimal(18,2)类型,精度位数都给了,但最后显示的还是四舍五入的结果34。如何显示完整的,不要四舍五入之后的结果。
看你这描述 。应该不是四舍五入 。 你是不是没有保留两位。 默认输出的。
------其他解决方案--------------------
C#里面是如何取值的呢?
C#里面也有decimal哦
SqlDataReader sdr;
decimal d = sdr.GetDecimal(0);
------其他解决方案--------------------
用cmd.Parameters取的,不能用这个么?
------其他解决方案--------------------
cmd.Parameters是设置sql或存储过程参数用的啊,
除非这个参数是个out参数,才能用这个取值。
------其他解决方案--------------------