服務熱線
153 8323 9821
在處理一些數據時,我們希望能用“四舍五入”法實現,但是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;
}
經過簡單的測試,上面的函數能實現對數據的四舍五入法。
Math.Round ()在四舍五入時有個問題:
上一篇:gbk與utf8的區別和比較