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问题怎么解决


Copyright © 2002-2019 测速网 https://www.inhv.cn/ 皖ICP备2023010105号 城市 地区 街道
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!
热门搜索