旅游景点网站设计方案梅州建网站
Math.Round()并不是严格意义上的是四舍五入函数。它默认的执行的是“银行家舍入”算法,即四舍六入五取偶。概括为:四舍六入五考虑、五后非零就进一,五后皆零看奇偶,五前为偶应舍去、五前为奇要进一。
当为5时,取离着最近的偶数。见下图:
              
 
测试代码如下:
using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
namespace MathRoundTest
 {
     class Program
     {
         static void Main(string[] args)
         {
             Console.WriteLine(Math.Round(1234.5).ToString());  //输出:1234
             Console.WriteLine(Math.Round(1234.50).ToString());  //输出:1234
             Console.WriteLine(Math.Round(1235.5).ToString());  //输出:1236
             Console.WriteLine(Math.Round(1235.50).ToString());  //输出:1236
             Console.WriteLine("---------------------------------------------");
            Console.WriteLine(Math.Round(-1234.5).ToString());  //输出:-1234
             Console.WriteLine(Math.Round(-1234.50).ToString());  //输出:-1234
             Console.WriteLine(Math.Round(-1235.5).ToString());  //输出:-1236
             Console.WriteLine(Math.Round(-1235.5).ToString());  //输出:-1236
             Console.WriteLine("---------------------------------------------");
            Console.WriteLine(Math.Round(123.45, 1).ToString());  //输出:123.4
             Console.WriteLine(Math.Round(123.55, 1).ToString());  //输出:123.6
             Console.WriteLine("---------------------------------------------");
             Console.WriteLine(Math.Round(-123.45, 1).ToString());  //输出:-123.4
             Console.WriteLine(Math.Round(-123.55, 1).ToString());  //输出:-123.6
             Console.WriteLine("---------------------------------------------");
            Console.ReadLine();
         }
     }
 }
  
如果要实现我们所需要的四舍五入,需要使用使用四舍五入策略参数:MidpointRounding.AwayFromZero (当为5时,取远离0的数值)。

测试代码如下:
using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
namespace MathRoundTest
 {
     class Program
     {
         static void Main(string[] args)
         {
             Console.WriteLine(Math.Round(1234.5,MidpointRounding.AwayFromZero).ToString());  //输出:1235
             Console.WriteLine(Math.Round(1234.50, MidpointRounding.AwayFromZero).ToString());  //输出:1235
             Console.WriteLine(Math.Round(1235.5, MidpointRounding.AwayFromZero).ToString());  //输出:1236
             Console.WriteLine(Math.Round(1235.50, MidpointRounding.AwayFromZero).ToString());  //输出:1236
             Console.WriteLine("---------------------------------------------");
            Console.WriteLine(Math.Round(-1234.5, MidpointRounding.AwayFromZero).ToString());  //输出:-1235
             Console.WriteLine(Math.Round(-1234.50, MidpointRounding.AwayFromZero).ToString());  //输出:-1235
             Console.WriteLine(Math.Round(-1235.5, MidpointRounding.AwayFromZero).ToString());  //输出:-1236
             Console.WriteLine(Math.Round(-1235.5, MidpointRounding.AwayFromZero).ToString());  //输出:-1236
             Console.WriteLine("---------------------------------------------");
            Console.WriteLine(Math.Round(123.45, 1, MidpointRounding.AwayFromZero).ToString());  //输出:123.5
             Console.WriteLine(Math.Round(123.55, 1, MidpointRounding.AwayFromZero).ToString());  //输出:123.6
             Console.WriteLine("---------------------------------------------");
             Console.WriteLine(Math.Round(-123.45, 1, MidpointRounding.AwayFromZero).ToString());  //输出:-123.5
             Console.WriteLine(Math.Round(-123.55, 1, MidpointRounding.AwayFromZero).ToString());  //输出:-123.6
             Console.WriteLine("---------------------------------------------");
            Console.ReadLine();
         }
     }
 }
  
