C#四舍五入MidpointRounding.AwayFromZero解析
c#四舍五入midpointrounding.awayfromzero解析
c#四舍五入midpointrounding.awayfromzero
四舍五入 在计算中 经常使用到,但是如果使用 math.round,只是五舍六入
在math.round内传入midpointrounding.awayfromzero枚举,就可以实现四舍五入的效果了,
debug.log($"四舍五入{66.6}。。。{(int)math.round(66.6, midpointrounding.awayfromzero)}"); debug.log($"四舍五入{66.5}。。。{(int)math.round(66.5, midpointrounding.awayfromzero)}"); debug.log($"四舍五入{66.4}。。。{(int)math.round(66.4, midpointrounding.awayfromzero)}"); debug.log($"四舍五入{66.6}。。。{(int)math.round(66.6)}"); debug.log($"四舍五入{66.5}。。。{(int)math.round(66.5)}"); debug.log($"四舍五入{66.4}。。。{(int)math.round(66.4)}");
c#文档:
https://docs.microsoft.com/zh-cn/dotnet/api/system.midpointrounding?view=net-6.0#system-midpointrounding-awayfromzero
c#四舍五入以及保留小数位的方法
c#中的math.round()并不是使用的"四舍五入"法。
其实c#的round函数都是采用banker’s rounding(银行家算法),即:四舍六入五取偶
math.round(0.4) //result:0 math.round(0.6) //result:1 math.round(0.5) //result:0 math.round(1.5) //result:2 math.round(2.5) //result:2
使用midpointrounding.awayfromzero的效果:
math.round(0.4, midpointrounding.awayfromzero); // result:0 math.round(0.6, midpointrounding.awayfromzero); // result:1 math.round(0.5, midpointrounding.awayfromzero); // result:1 math.round(1.5, midpointrounding.awayfromzero); // result:2 math.round(2.5, midpointrounding.awayfromzero); // result:3
保留后俩位小数点要用到另一个重载方法
math.round((decimal)22.325, 2,midpointrounding.awayfromzero)//result : 22.33
c#实现保留两位小数的方法
math.round(0.333, 2);//按照四舍五入的国际标准 double dbdata = 0.335; string str1 = string.format("{0:f}", dbdata);//默认为保留两位 decimal.round(decimal.parse("0.3453"), 2) convert.todecimal("0.3333").tostring("0.00");
c#保留小数点后几位
string.format("{0:n1}", a) 保留小数点后一位 string.format("{0:n2}", a) 保留小数点后两位 string.format("{0:n3}", a) 保留小数点后三位
c#保留小数位n位四舍五入
double s=0.55555; result=s.tostring("#0.00");//点后面几个0就保留几位
c#保留小数位n位四舍五入
double dbdata = 0.55555; string str1 = dbdata.tostring("f2");//fn 保留n位,四舍五入
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持硕编程。