C#之如何实现真正的四舍五入.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

C#之如何实现真正的四舍五入

目录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(value0)

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.Lengthi)

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);//向上转换

??????else

????????t1=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。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

文档评论(0)

135****5541 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档