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

「已注销」 2012-12-07 10:51:46
如题,要取消掉数据库库里decimal类型默认的四舍五入。

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

round方法也试了,还是不行。
...全文
1021 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2012-12-07
  • 打赏
  • 举报
回复
引用 8 楼 haukwong 的回复:
引用 5 楼 cookiesjing 的回复: 引用 4 楼 haukwong 的回复:sql 2012没发现有什么问题 是否可以把问题描述详细一点?什么时候变成 34.00 四舍五入的?sql求sum的时候?还是在C#代码里面呢? 哦,数据库里没问题,是在C#代码里。 C#里面是如何取值的呢? C#里面也有decimal哦 SqlDataReade……
Decimal sumMoney = Convert.ToDecimal(cmd.Parameters["@.."].Value); 这个参数是个输出类型
Hauk 2012-12-07
  • 打赏
  • 举报
回复
引用 9 楼 cookiesjing 的回复:
引用 8 楼 haukwong 的回复:引用 5 楼 cookiesjing 的回复: 引用 4 楼 haukwong 的回复:sql 2012没发现有什么问题 是否可以把问题描述详细一点?什么时候变成 34.00 四舍五入的?sql求sum的时候?还是在C#代码里面呢? 哦,数据库里没问题,是在C#代码里。 C#里面是如何取值的呢? C#里面也有dec……
cmd.Parameters是设置sql或存储过程参数用的啊, 除非这个参数是个out参数,才能用这个取值。
「已注销」 2012-12-07
  • 打赏
  • 举报
回复
引用 8 楼 haukwong 的回复:
引用 5 楼 cookiesjing 的回复: 引用 4 楼 haukwong 的回复:sql 2012没发现有什么问题 是否可以把问题描述详细一点?什么时候变成 34.00 四舍五入的?sql求sum的时候?还是在C#代码里面呢? 哦,数据库里没问题,是在C#代码里。 C#里面是如何取值的呢? C#里面也有decimal哦 SqlDataReade……
用cmd.Parameters取的,不能用这个么?
Hauk 2012-12-07
  • 打赏
  • 举报
回复
引用 5 楼 cookiesjing 的回复:
引用 4 楼 haukwong 的回复:sql 2012没发现有什么问题 是否可以把问题描述详细一点?什么时候变成 34.00 四舍五入的?sql求sum的时候?还是在C#代码里面呢? 哦,数据库里没问题,是在C#代码里。
C#里面是如何取值的呢? C#里面也有decimal哦 SqlDataReader sdr; decimal d = sdr.GetDecimal(0);
Assassin_ 2012-12-07
  • 打赏
  • 举报
回复
如:存进去的是12.34 ,最后把该列求和出来的数值为 34.24(用sum求的和) ,都是decimal(18,2)类型,精度位数都给了,但最后显示的还是四舍五入的结果34。如何显示完整的,不要四舍五入之后的结果。 看你这描述 。应该不是四舍五入 。 你是不是没有保留两位。 默认输出的。
Assassin_ 2012-12-07
  • 打赏
  • 举报
回复
取出的时候 保留两位没有?
「已注销」 2012-12-07
  • 打赏
  • 举报
回复
引用 4 楼 haukwong 的回复:
sql 2012没发现有什么问题 是否可以把问题描述详细一点?什么时候变成 34.00 四舍五入的?sql求sum的时候?还是在C#代码里面呢?
哦,数据库里没问题,是在C#代码里。
Hauk 2012-12-07
  • 打赏
  • 举报
回复

sql 2012没发现有什么问题
是否可以把问题描述详细一点?什么时候变成 34.00 四舍五入的?sql求sum的时候?还是在C#代码里面呢?
「已注销」 2012-12-07
  • 打赏
  • 举报
回复
引用 1 楼 qldsrx 的回复:
你是什么数据库?我从未发现这种自动四舍五入的现象,难道是你取出来后到实体类的时候,用int类型的属性加载了它?
最后显示的是 34.00 数据库是sqlserver2008
夏小安Lily 2012-12-07
  • 打赏
  • 举报
回复
decimal是数据类型.18位.没有小数位 .....................
qldsrx 2012-12-07
  • 打赏
  • 举报
回复
你是什么数据库?我从未发现这种自动四舍五入的现象,难道是你取出来后到实体类的时候,用int类型的属性加载了它?
「已注销」 2012-12-07
  • 打赏
  • 举报
回复
引用 15 楼 qldsrx 的回复:
试试如下的写法,特别是最后那个 Convert.ToDecimal完全多余。 cmd.Parameters.Add("@..", SqlDbType.Decimal).Scale = 2; cmd.Parameters["@.."].Direction = ParameterDirection.Output; Decimal sumMoney = (Decimal)cmd.Parameter……
谢谢!!!
qldsrx 2012-12-07
  • 打赏
  • 举报
回复
试试如下的写法,特别是最后那个 Convert.ToDecimal完全多余。 cmd.Parameters.Add("@..", SqlDbType.Decimal).Scale = 2; cmd.Parameters["@.."].Direction = ParameterDirection.Output; Decimal sumMoney = (Decimal)cmd.Parameters["@.."].Value;
「已注销」 2012-12-07
  • 打赏
  • 举报
回复
引用 12 楼 qldsrx 的回复:
你是存储过程定义出了问题,输出参数定义为了decimal,应该定义为decimal(18,2),这个我在一些代码生成工具里就看到了,他们忽视了这个类型的精度,产生了BUG。
cmd.Parameters.Add("@..", SqlDbType.Decimal);(这里需要处理下么?) cmd.Parameters["@.."].Direction = ParameterDirection.Output; Decimal sumMoney = Convert.ToDecimal(cmd.Parameters["@.."].Value);
「已注销」 2012-12-07
  • 打赏
  • 举报
回复
引用 12 楼 qldsrx 的回复:
你是存储过程定义出了问题,输出参数定义为了decimal,应该定义为decimal(18,2),这个我在一些代码生成工具里就看到了,他们忽视了这个类型的精度,产生了BUG。
精度都有,数据库里没问题,执行过了,查过了,但到C#代码里就有问题了。 代码如下: Decimal sumMoney = Convert.ToDecimal(cmd.Parameters["@.."].Value); 参数是输出类型 有问题么?
qldsrx 2012-12-07
  • 打赏
  • 举报
回复
你是存储过程定义出了问题,输出参数定义为了decimal,应该定义为decimal(18,2),这个我在一些代码生成工具里就看到了,他们忽视了这个类型的精度,产生了BUG。

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧