關於c 的四捨五入問題

2021-05-04 15:29:44 字數 1108 閱讀 9572

下面是網上流傳的關於c#的四捨五入的程式**:

public

static

doubleround(doubled,inti)   

else

stringstr = d.tostring();   

stringstrs = str.split('.'

);   

intidot = str.indexof('.'

);   

stringprestr = strs[0];   

stringpoststr = strs[1];   

if(poststr.length > i)   

stringstrd = prestr + "."

+ poststr;   

d = double.parse(strd);   

returnd;   

}  

關於這段**其實是有bug的。bug的原因是當double的型別d是100.0時的時候。。也就是說正好小數點後面是0的情況下,那麼d.tostring()得出來的結果是100....那麼此時的strs陣列的長度將為1。。。即stringpoststr = strs[1]; 這一句將會丟擲陣列越界的異常。因此要做如下簡單的修改:

string str = value.tostring();

string strs = str.split('.');

int idot = str.indexof('.');

if (idot > 0)

string strd = prestr + "." + poststr;

value = double.parse(strd);

}else

關於四捨五入

四捨五入 轉http nssoft.showdoc.asp?did 267 delphi的四捨五入函式round,對於 5的情況,整數部分是奇數,那麼會round up,偶數會round down,例如 x round 17.5 x 18 x round 12.5 x 12 請使用下面的函式代替ro...

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...