C 中四捨五入的問題

2021-09-22 09:16:28 字數 633 閱讀 2142

math.round()準確的說,這個函式不是四捨五入,而是四捨六入五湊偶,就是說小於4或大於6的該舍該入是沒有爭議的,而5處在正中間,如果四捨五入則會造成資料的整體偏差,所以採取的原則是:如果捨入位為5,則捨入後最後一位為偶數,這是國際慣例。

c# 中沒有四捨五入函式,事實上我知道的程式語言都沒有四捨五入函式,因為四捨五入演算法不科學,國際通行的是 banker 捨入法 banker 's rounding(銀行家捨入)演算法,即四捨六入五取偶。事實上這也是 ieee 規定的捨入標準。因此所有符合 ieee 標準的語言都應該是採用這一演算法的。

下面的這段**能實現嚴格的四捨五入:

public

static

double round(double num, int

prec)

int ivalue = 1

;

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

double int = math.round(num * ivalue + 0.5, 0

); num = int /ivalue;

if(isnegative)

return

num;

}

c 四捨五入

在處理一些資料時,我們希望能用 四捨五入 法實現,但是c 採用的是 四捨六入五成雙 的方法,如下面的例子,就是用 四捨六入五成雙 得到的結果 double d1 math.round 1.25,1 1.2double d2 math.round 1.24,1 1.2double d3 math.ro...

c 四捨五入

math.round跟conver.toint32一樣,都是使用四捨六入五成雙的規則,例如 math.round 3.2 返回3 math.round 3.6 返回4 math.round 3.5 返回4 math.round 2.5 返回2 要做到四捨五入,可加上引數midpointroundin...

C 四捨五入

在處理一些資料時,我們希望能用 四捨五入 法實現,但是c 採用的是 四捨六入五成雙 的方法,如下面的例子,就是用 四捨六入五成雙 得到的結果 double d1 math.round 1.25,1 1.2double d2 math.round 1.24,1 1.2double d3 math.ro...