首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

怎么取消数据库库里decimal类型默认的四舍五入

2012-12-25 
如何取消数据库库里decimal类型默认的四舍五入如题,要取消掉数据库库里decimal类型默认的四舍五入。如:存进

如何取消数据库库里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#代码里。


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

            SqlDataReade……





Decimal sumMoney = Convert.ToDecimal(cmd.Parameters["@.."].Value);

这个参数是个输出类型
[其他解释]
你是存储过程定义出了问题,输出参数定义为了decimal,应该定义为decimal(18,2),这个我在一些代码生成工具里就看到了,他们忽视了这个类型的精度,产生了BUG。
[其他解释]
引用:
你是存储过程定义出了问题,输出参数定义为了decimal,应该定义为decimal(18,2),这个我在一些代码生成工具里就看到了,他们忽视了这个类型的精度,产生了BUG。


精度都有,数据库里没问题,执行过了,查过了,但到C#代码里就有问题了。

代码如下:
Decimal sumMoney = Convert.ToDecimal(cmd.Parameters["@.."].Value);
参数是输出类型 

有问题么?

[其他解释]
引用:
你是存储过程定义出了问题,输出参数定义为了decimal,应该定义为decimal(18,2),这个我在一些代码生成工具里就看到了,他们忽视了这个类型的精度,产生了BUG。



cmd.Parameters.Add("@..", SqlDbType.Decimal);(这里需要处理下么?)
cmd.Parameters["@.."].Direction = ParameterDirection.Output;
Decimal sumMoney = Convert.ToDecimal(cmd.Parameters["@.."].Value);


[其他解释]
引用:
试试如下的写法,特别是最后那个 Convert.ToDecimal完全多余。
cmd.Parameters.Add("@..", SqlDbType.Decimal).Scale = 2;
cmd.Parameters["@.."].Direction = ParameterDirection.Output;
Decimal sumMoney = (Decimal)cmd.Parameter……



谢谢!!!

热点排行