C#怎么实现真正的四舍五入
本篇内容介绍了“C#怎么实现真正的四舍五入”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
C#实现真正的四舍五入
C#中的Math.Round()直接使用的话,实际上是:四舍六入五取偶,并不是真正意义上的四舍五入。
例如 我取2位小数 17.365
会变成17.36 很苦恼
实现真正四舍五入需要用到 MidpointRounding.AwayFromZero 枚举项,同时传入的数值类型必须是decimal类型:
用法示例:
decimaldd=Math.Round((decimal)66.545,2,MidpointRounding.AwayFromZero);
还有2种比较残暴的 写个函数 正负数都可以四舍五入或者负数五舍六入
doubleRound(doublevalue,intdecimals){ if(value<0) { returnMath.Round(value+5/Math.Pow(10,decimals+1),decimals,MidpointRounding.AwayFromZero); } else { returnMath.Round(value,decimals,MidpointRounding.AwayFromZero); }}
doubleRound(doubled,inti){ if(d>=0) { d+=5*Math.Pow(10,-(i+1)); } else { d+=-5*Math.Pow(10,-(i+1)); } stringstr=d.ToString(); string[]strs=str.Split('.'); intidot=str.IndexOf('.'); stringprestr=strs[0]; stringpoststr=strs[1]; if(poststr.Length>i) { poststr=str.Substring(idot+1,i); } stringstrd=prestr+"."+poststr; d=Double.Parse(strd); returnd;}
参数:d表示要四舍五入的数;i表示要保留的小数点后为数。
其中第二种方法是正负数都四舍五入,第一种方法是正数四舍五入,负数是五舍六入。
备注:个人认为第一种方法适合处理货币计算,而第二种方法适合数据统计的显示。
C#简单四舍五入函数
publicintgetNum(doublet){doublet1;intt2;string[]s=t.ToString().Split('.');stringi=s[1].Substring(0,1);//取得第一位小数intj=Convert.ToInt32(i);if(j>=5)t1=Math.Ceiling(t);//向上转换elset1=Math.Floor(t);//向下转换t2=(int)t1;returnt2;}
Convert.ToInt32(1.2)
为四舍五入 的强制转换 但是 0.5时候 会为 0(int) 1.2
是向下强制转换既Math.Floor(),1.2转换后为1;Math.Ceiling(1.2)
则是向上转换,得到2。
“C#怎么实现真正的四舍五入”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注主机评测网网站,小编将为大家输出更多高质量的实用文章!
上一篇:Spring中的顺序问题怎么解决
下一篇:oracle数据库id自增及生成uuid问题怎么解决
输入法切换键是哪个键?输入法切
冬月是哪一个月?冬月是什么意思
个人所得税退税金额怎么算出来的
输入法全角和半角有什么区别?输
a4纸尺寸是多少厘米?a4纸的由来
个人所得税扣除标准?个人所得税
输入法哪个好用?输入法介绍
卡拉OK是哪个国家发明的?卡拉OK
mikutools原神网页版入口链接?m
关机特别慢什么原因?电脑和手机