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

C#中Math.Round(1.785m, 2)未正确舍入的问题咨询

Decimal类型1.785m两位小数舍入问题的解决方法

decimal虽然是十进制浮点类型,但1.785m在实际存储中是一个略小于1.785的精确值,这导致默认舍入逻辑(银行家舍入,即MidpointRounding.ToEven)会得到1.78m而非预期的1.79m。

标准解决方案

直接使用Math.Round方法并指定MidpointRounding.AwayFromZero舍入模式,该模式会让xx.xx5这类中间值向远离0的方向舍入:

decimal value = 1.785m;
decimal result = Math.Round(value, 2, MidpointRounding.AwayFromZero);
// 结果为 1.79m

关于你的临时方案

你手动通过放大数值、判断末位再调整的方法确实能得到正确结果,但标准的Math.Round写法更简洁规范,也更便于后续维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 22:12:33