C# 四舍五入保留两位小数方法总结

在开发中我们经常需要将数值数据进行四舍五入,保留相关小数。我总结了常用的三种转换方式及其对应的特点。

方式一:使用Math.Round(double,int)
//常规方法:使用Math.Round(),
double num1 = Math.Round(2.455,2);//得到的值是2.46
double num2 = Math.Round(2.445, 2);//得到的值是2.44,实际生活中我们认为应该得到2.45
double num3 = Math.Round(2.454,2);//得到的值是2.45
double num4 = Math.Round(2.456, 2);//得到的值是2.46

方式一,是我们在实际开发中经常使用的进行四舍五入的方法,但是再使用的时候一定要注意,C#中的Round()不是我们中国人理解的四舍五入,是老外的四舍五入,是符合IEEE标准的四舍五入,具体是四舍六入,如果遇5则前一位如果是偶数则舍掉,如果是奇数则进一位

方式二:使用Math.Round(double,int,MidpointRounding)
//方法二:使用Math.Round()的重载函数,四舍五入,保留两位数据
double num5 = Math.Round(2.455,2,MidpointRounding.AwayFromZero);//得到的值是2.46
double num6 = Math.Round(2.445,2,MidpointRounding.AwayFromZero);//得到的值是2.45
double num7 = Math.Round(2.454,2,MidpointRounding.AwayFromZero);//得到的值是2.45
double num8 = Math.Round(2.456,2,MidpointRounding.AwayFromZero);//得到的值是2.46

这种方式才是我们中国人理解的四舍五入。

方式三:使用.tostring(“0.00”)进行格式化
//方式三:使用double.tostring("0.00")进行格式化
double num9 = 2.455;
double num10 = 2.445;
double num11 = 2.456;
double num12 = 2.454;

string strNum9 = num9.ToString("0.00");  //得到的值是"2.46"
string strNum10= num10.ToString("0.00"); //得到的值是"2.45"
string strNum11= num11.ToString("0.00"); //得到的值是"2.46"
string strNum12= num12.ToString("0.00"); //得到的值是"2.45"

备注:如需保留1位小数,则.ToString(“0.0”)即可,3位小数以此类推

方式四:增加0.*5

如果我们需要对一个数四舍五入,保留2位小数,又需要2.445这样的数值保留后为2.45而不是2.44,我们还可以给这个数增加0.005;

//方式三:增加0.005
double num13 = 2.445;
double num14 = 2.455;
double num13To = Math.Round(num13 + 0.005,2);//得到的结果是2.45
double num14To = Math.Round(num14 + 0.005, 2);//得到的结果是2.46

备注:
1.如果是保留3为小数则添加0.0005即可,其它依次类推。
2.此法也适用于Convert.ToInt32(),进行int数据转换。

总结: 综合比较上述四种方式,可以看出方式二是最适用最科学的方式。

猜你喜欢

转载自blog.csdn.net/qq_39541254/article/details/107372461