C# 的 Round 和 ToString,二者效果是不一样的。
decimal d = 1.345m; Response.Write(Math.Round(d, 2)); // 1.34 Response.Write(decimal.Round(d, 2)); // 1.34 Response.Write(d.ToString("0.00")); // 1.35
Math.Round 与 decimal.Round 是一样的,都是靠近最近的偶数。
ToString 则不一样了,ToString 是遇五就入。
我就要用 Math.Round 实现遇五就入,怎么办?
指定第 3 个参数:
MidpointRounding.AwayFromZero,向远离 0 的数入,看起很难理解,实际它想表达的意思就是:2.5 入为 3(更远离 0 嘛),-2.5 入为 -3(更远离 0 嘛).
MidpointRounding.ToEven,这是默认的,最靠近的偶数。