下面是網上流傳的關於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...