在处理一些数据时,我们希望能用“四舍五入”法实现,但是C#采用的是“四舍六入五成双”的方法,如下面的例子,就是用“四舍六入五成双”得到的结果:

double d1 = Math.Round(1.25, 1);//1.2

double d2 = Math.Round(1.24, 1);//1.2

double d3 = Math.Round(1.26, 1);//1.3

double d4 = Math.Round(1.35, 1);//1.4
为了用C#来实现“四舍五入”,我写了下面的函数:

/// <summary>

/// 实现数据的四舍五入法

/// </summary>

/// <param name="v">要进行处理的数据</param>

/// <param name="x">保留的小数位数</param>

/// <returns>四舍五入后的结果</returns>

private double Round(double v, int x)

{

bool isNegative = false;

//如果是负数

if (v < 0)

{

isNegative = true;

v = -v;

}


int IValue = 1;

for (int i = 1; i <= x; i++)

{

IValue = IValue * 10;

}

double Int = Math.Round(v * IValue + 0.5,0);

v = Int / IValue;

if (isNegative)

{

v = -v;

}


return v;

}
经过简单的测试,上面的函数能实现对数据的四舍五入法。