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

C# Math.Round方法异常行为疑问:为何结果不符预期?

关于Math.Round(45.4545m, 2, MidpointRounding.AwayFromZero)结果的说明

你误解了MidpointRounding.AwayFromZero的生效逻辑:这个枚举值仅当要舍去的部分恰好等于中点值时,才会触发向远离0方向进位的规则。

具体到你的代码:

  • 保留两位小数时,需要关注第三位及之后的数值总和。45.4545要舍去的部分是0.0045,这个值小于两位小数对应的中点值0.005。
  • 只有当舍去部分恰好等于0.005时(比如输入值为45.455m),MidpointRounding.AwayFromZero才会让结果进位到45.46。
  • 你的输入中舍去部分不足中点值,因此会直接截断多余位数,最终得到45.45。

对比示例:

// 舍去部分为0.005,触发进位
Math.Round(45.455m, 2, MidpointRounding.AwayFromZero); // 结果:45.46
// 舍去部分为0.0045,不触发进位
Math.Round(45.4545m, 2, MidpointRounding.AwayFromZero); // 结果:45.45

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 12:12:02