You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中Math.Round(4.25,1)返回4.2而非4.3的原因及解决方法

Math.Round(4.25,1)返回4.2而非4.3的原因及解决方法

问题原因

C#中的Math.Round方法默认采用银行家舍入法(四舍六入五成双),这套规则的核心逻辑是:当需要舍去的数字恰好是5,且前一位数字为偶数时,直接舍去该位;若前一位是奇数,则向前进位。

对于Math.Round(4.25,1),我们需要保留1位小数,此时要判断的是小数点后第二位的5,而它的前一位是2(偶数),所以按照规则会舍去这个5,最终得到4.2。

解决方法

如果希望得到4.3,也就是使用常规的“四舍五入”逻辑,可以调用Math.Round的重载方法,传入MidpointRounding.AwayFromZero参数,该参数会让舍入时向远离0的方向进位:

decimal avg = Math.Round(4.25, 1, MidpointRounding.AwayFromZero);

执行这段代码后,结果就会是4.3。

内容的提问来源于stack exchange,提问作者Chaitanya Karmarkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 08:05:25