Decimal.Round()方法的问题

风轻扬 2003-11-13 12:46:10
在.net Framework 1.0下,Decimal.Round(Decimal.Parse(1)/Decimal.Parse(3),2)*100=33,而在1.1下却等于33.00,不知道为什么,那位高手知道?
...全文
435 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
l_clove 2003-11-14
  • 打赏
  • 举报
回复
提示一下:SQL Server中的Decimal可以指定小数位。
l_clove 2003-11-14
  • 打赏
  • 举报
回复
对呀,我也找了半天。
风轻扬 2003-11-14
  • 打赏
  • 举报
回复
没有人知道吗?
风轻扬 2003-11-14
  • 打赏
  • 举报
回复
我这参与除法运算的数都是通过Count(*)从数据库查出来的,并不是数据库中某个int型字段的值,所以SQL Server中的函数是肯定不行了,我要是把2指定成0,结果也就成0了,因为当初计算出来的是0.33333...,现在四舍五入到保留0个小数,不就成0了吗。

有没有微软的MVP,解释一下呗,顺便给个Answer,知道当看到100.0这个统计结果后感觉如何吗?考,气愤,本来在1.0下这种现象根本就不存在。
brightheroes 2003-11-13
  • 打赏
  • 举报
回复
就是微软修正了一下精度
这还算好的
其实1.1和1.0的兼容性.....
呵呵
sea026 2003-11-13
  • 打赏
  • 举报
回复
Kao
decimal 构造函数居然没有固定小数位的,BS微软。
dotnba 2003-11-13
  • 打赏
  • 举报
回复
Decimal.Round(Decimal.Parse("1") * 100 / Decimal.Parse("3"),0)
sea026 2003-11-13
  • 打赏
  • 举报
回复
我错了,这时你的Decimal小数都是4位了。
sea026 2003-11-13
  • 打赏
  • 举报
回复
>如果我把括号中的2改成4,就变成了33.3300

你试了再说吧!

^_^
l_clove 2003-11-13
  • 打赏
  • 举报
回复
Decimal.ToInt()...

--------------------------
学习一下。
l_clove 2003-11-13
  • 打赏
  • 举报
回复
1.1确实是33.00

--------------------------
学习一下。
风轻扬 2003-11-13
  • 打赏
  • 举报
回复
修正了一下精度?可我的意图就是要得到33,而不是33.00啊,精度再高没有满足我的要求,还不是一样白扯,如果我把括号中的2改成4,就变成了33.3300,我就想要33.33啊,像33变成33.00我可以强制转换成int型,可33.33变成33.3300我怎么转换成33.33啊,微软到底这么修正是为了什么?有什么解决办法吗?

110,536

社区成员

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

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

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