Math.Round默认采用的不是四舍五入法, 而是四舍六入的银行家算法, 如何找回四舍五入法?...
Math.Round默認(rèn)采用的不是四舍五入法, 而是四舍六入的銀行家算法,? 也就是四舍六入五考慮,五后非零就進(jìn)一,五后皆零看奇偶,五前為偶應(yīng)舍 去,五前為奇要進(jìn)一, 這個算法比四舍五入更精確些.
??????????? Response.Write("<BR>" + Math.Round(144.34, 1)); --144.3
??????????? Response.Write("<BR>" + Math.Round(144.15, 1));?--144.2
??????????? Response.Write("<BR>" + Math.Round(144.25, 1));?--144.2
??????????? Response.Write("<BR>" + Math.Round(144.35, 1));?--144.4
??????????? Response.Write("<BR>" + Math.Round(144.36, 1));?--144.4
?
但這根我們有些場合的預(yù)期結(jié)果有差異, 不太一致? 如何找回熟悉的四舍五入法? 加上MidpointRounding.AwayFromZero參數(shù)即可.
??????????? Response.Write("<BR>" + Math.Round(144.34, 1, MidpointRounding.AwayFromZero));
??????????? Response.Write("<BR>" + Math.Round(144.15, 1, MidpointRounding.AwayFromZero));
??????????? Response.Write("<BR>" + Math.Round(144.25, 1, MidpointRounding.AwayFromZero));
??????????? Response.Write("<BR>" + Math.Round(144.35, 1, MidpointRounding.AwayFromZero));
??????????? Response.Write("<BR>" + Math.Round(144.36, 1, MidpointRounding.AwayFromZero));
?
如果加MidpointRounding.ToEven, 則又返回了四舍六入.
轉(zhuǎn)載于:https://www.cnblogs.com/liuzhendong/archive/2011/07/04/2097624.html
總結(jié)
以上是生活随笔為你收集整理的Math.Round默认采用的不是四舍五入法, 而是四舍六入的银行家算法, 如何找回四舍五入法?...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: diff与patch命令
- 下一篇: 设备坐标与逻辑坐标关系