Поделиться через


Math.Round - MidpointRounding Enum

I have received some requests to talk about how you can control roundingin Whidbey. So here we go.... :)  

In Everett, the CLR only support one type of rounding. The Math.Round uses Banker's Rounding Algorithm. (This is the algorithm banks use.. thus the name) This algorithm rounds to the near integer, and if there are two nearest integer, it will round to the even one.

i.e.

Math.Round(2.4); //Returns 2.
Math.Round(2.5); //Returns 2.
Math.Round(2.6); //Returns 3.

Math.Round(3.4); //Returns 3.
Math.Round(3.5); //Returns 4.
Math.Round(3.6); //Returns 4.

Math.Round(3.44, 1); //Returns 3.4.
Math.Round(3.45, 1); //Returns 3.4.
Math.Round(3.46, 1); //Returns 3.5.

More information about this can be found on MSDN.

In Whindbey, we added flexiblity to allow users to specify how they would like to round borderline situations. You can do so by passing in MidpointRounding Enum into Math.Round() functions.

MidpointRounding consist of two members namely:

MidpointRounding.AwayFromZero

// A number is rounded twoards the nearest number that is away from Zero

MidpointRounding.ToEven

// A number is rounded towards the nearest even number

You can find more about MidpointRounding enum in MSDN2.

I want to start answering frequent ask BCL questions on this blog. If you have a particular question, let me know. :)

Comments

  • Anonymous
    March 31, 2006
    "I see stuff like {0,-8:G2} passed in as a format string. What exactly does that do?" -- Very Confused...
  • Anonymous
    September 29, 2006
    Why more kinds?

    http://www.diycalculator.com/popup-m-round.shtml
  • Anonymous
    June 14, 2007
    "I see stuff like {0,-8:G2} passed in as a format string. What exactly does that do?" -- Very Confused