§ ITPOW >> 文档 >> C#

统计软件开发中的四舍五入大问题-C# Round 与 ToString 不同

作者:vkvi 来源:ITPOW(原创) 日期:2021-4-7

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.Rounddecimal.Round 是一样的,都是靠近最近的偶数。

ToString 则不一样了,ToString 是遇五就入

我就要用 Math.Round 实现遇五就入,怎么办?

指定第 3 个参数:

  • MidpointRounding.AwayFromZero,向远离 0 的数入,看起很难理解,实际它想表达的意思就是:2.5 入为 3(更远离 0 嘛),-2.5 入为 -3(更远离 0 嘛).

  • MidpointRounding.ToEven,这是默认的,最靠近的偶数。

相关文章