Decimal.Round Decimal.Round Decimal.Round Decimal.Round Method

Определение

Округляет значение до ближайшего целого или указанного количества десятичных знаков.Rounds a value to the nearest integer or specified number of decimal places.

Перегрузки

Round(Decimal) Round(Decimal) Round(Decimal) Round(Decimal)

Округляет десятичное значение до ближайшего целого.Rounds a decimal value to the nearest integer.

Round(Decimal, Int32) Round(Decimal, Int32) Round(Decimal, Int32) Round(Decimal, Int32)

Округляет значение Decimal до указанного числа десятичных знаков.Rounds a Decimal value to a specified number of decimal places.

Round(Decimal, MidpointRounding) Round(Decimal, MidpointRounding) Round(Decimal, MidpointRounding) Round(Decimal, MidpointRounding)

Округляет десятичное значение до ближайшего целого.Rounds a decimal value to the nearest integer. Параметр задает правило округления значения, если оно находится ровно посредине между двумя другими числами.A parameter specifies how to round the value if it is midway between two other numbers.

Round(Decimal, Int32, MidpointRounding) Round(Decimal, Int32, MidpointRounding) Round(Decimal, Int32, MidpointRounding) Round(Decimal, Int32, MidpointRounding)

Округляет десятичное значение с указанной точностью.Rounds a decimal value to a specified precision. Параметр задает правило округления значения, если оно находится ровно посредине между двумя другими числами.A parameter specifies how to round the value if it is midway between two other numbers.

Round(Decimal) Round(Decimal) Round(Decimal) Round(Decimal)

Округляет десятичное значение до ближайшего целого.Rounds a decimal value to the nearest integer.

public:
 static System::Decimal Round(System::Decimal d);
public static decimal Round (decimal d);
static member Round : decimal -> decimal
Public Shared Function Round (d As Decimal) As Decimal

Параметры

d
Decimal Decimal Decimal Decimal

Округляемое десятичное число.A decimal number to round.

Возвраты

Целое число, ближайшее к значению параметра d.The integer that is nearest to the d parameter. Если d находится на равном расстоянии от двух целых чисел (четного и нечетного), возвращается четное число.If d is halfway between two integers, one of which is even and the other odd, the even number is returned.

Исключения

Результат находится вне диапазона значения Decimal.The result is outside the range of a Decimal value.

Примеры

Следующий пример округляет диапазон Decimal значений между 100 и 102 до ближайшего целого числа.The following example rounds a range of Decimal values between 100 and 102 to the nearest integer. Так как метод использует округление банка, обратите внимание, что 100,5 округляется до 100 и 101,5 округляет до 102.Because the method uses banker's rounding, note that 100.5 rounds to 100 and 101.5 rounds to 102.

using System;

public class Example
{
   public static void Main()
   {
      for (decimal value = 100m; value <= 102m; value += .1m)
         Console.WriteLine("{0} --> {1}", value, Decimal.Round(value));

   }
}
// The example displays the following output:
//     100 --> 100
//     100.1 --> 100
//     100.2 --> 100
//     100.3 --> 100
//     100.4 --> 100
//     100.5 --> 100
//     100.6 --> 101
//     100.7 --> 101
//     100.8 --> 101
//     100.9 --> 101
//     101.0 --> 101
//     101.1 --> 101
//     101.2 --> 101
//     101.3 --> 101
//     101.4 --> 101
//     101.5 --> 102
//     101.6 --> 102
//     101.7 --> 102
//     101.8 --> 102
//     101.9 --> 102
//     102.0 --> 102
Module Example
   Public Sub Main()
      For value As Decimal = 100d To 102d Step .1d
         Console.WriteLine("{0} --> {1}", value, Decimal.Round(value))
      Next
   End Sub
End Module
' The example displays the following output:
'     100 --> 100
'     100.1 --> 100
'     100.2 --> 100
'     100.3 --> 100
'     100.4 --> 100
'     100.5 --> 100
'     100.6 --> 101
'     100.7 --> 101
'     100.8 --> 101
'     100.9 --> 101
'     101.0 --> 101
'     101.1 --> 101
'     101.2 --> 101
'     101.3 --> 101
'     101.4 --> 101
'     101.5 --> 102
'     101.6 --> 102
'     101.7 --> 102
'     101.8 --> 102
'     101.9 --> 102
'     102.0 --> 102

Комментарии

Поведение этого метода соответствует стандарту IEEE 754, разделу 4.The behavior of this method follows IEEE Standard 754, section 4. Этот тип округления иногда называют округлением до четного или банковского округления.This kind of rounding is sometimes called round half to even or banker's rounding. Он позволяет избежать ошибок округления, возникающих в результате согласованного округления среднего значения в одном направлении.It minimizes rounding errors that result from consistently rounding a midpoint value in a single direction. Он эквивалентен вызову Round(Decimal, MidpointRounding) метода mode с аргументом MidpointRounding.ToEven.It is equivalent to calling the Round(Decimal, MidpointRounding) method with a mode argument of MidpointRounding.ToEven.

Дополнительно

Round(Decimal, Int32) Round(Decimal, Int32) Round(Decimal, Int32) Round(Decimal, Int32)

Округляет значение Decimal до указанного числа десятичных знаков.Rounds a Decimal value to a specified number of decimal places.

public:
 static System::Decimal Round(System::Decimal d, int decimals);
public static decimal Round (decimal d, int decimals);
static member Round : decimal * int -> decimal
Public Shared Function Round (d As Decimal, decimals As Integer) As Decimal

Параметры

d
Decimal Decimal Decimal Decimal

Округляемое десятичное число.A decimal number to round.

decimals
Int32 Int32 Int32 Int32

Значение от 0 до 28, задающее число десятичных знаков, до которого необходимо округлить значение.A value from 0 to 28 that specifies the number of decimal places to round to.

Возвраты

Десятичное число, эквивалентное значению параметра d, округленное до количества десятичных знаков, заданного в параметре decimals.The decimal number equivalent to d rounded to decimals number of decimal places.

Исключения

decimals не в диапазоне от 0 до 28.decimals is not a value from 0 to 28.

Примеры

В следующем примере несколько Decimal значений округляются до указанного числа десятичных разрядов Round с помощью метода.The following example rounds several Decimal values to a specified number of decimal places using the Round method.

using System;

class Example
{
   public static void Main()
   {
      // Define a set of Decimal values.
      decimal[] values = { 1.45m, 1.55m, 123.456789m, 123.456789m, 
                           123.456789m, -123.456m, 
                           new Decimal(1230000000, 0, 0, true, 7 ),
                           new Decimal(1230000000, 0, 0, true, 7 ), 
                           -9999999999.9999999999m, 
                           -9999999999.9999999999m };
      // Define a set of integers to for decimals argument.
      int[] decimals = { 1, 1, 4, 6, 8, 0, 3, 11, 9, 10};
      
      Console.WriteLine("{0,26}{1,8}{2,26}", 
                        "Argument", "Digits", "Result" );
      Console.WriteLine("{0,26}{1,8}{2,26}", 
                        "--------", "------", "------" );
      for (int ctr = 0; ctr < values.Length; ctr++)
        Console.WriteLine("{0,26}{1,8}{2,26}", 
                          values[ctr], decimals[ctr], 
                          Decimal.Round(values[ctr], decimals[ctr]));
    }
}
// The example displays the following output:
//                   Argument  Digits                    Result
//                   --------  ------                    ------
//                       1.45       1                       1.4
//                       1.55       1                       1.6
//                 123.456789       4                  123.4568
//                 123.456789       6                123.456789
//                 123.456789       8                123.456789
//                   -123.456       0                      -123
//               -123.0000000       3                  -123.000
//               -123.0000000      11              -123.0000000
//     -9999999999.9999999999       9    -10000000000.000000000
//     -9999999999.9999999999      10    -9999999999.9999999999
Public Module Example
   Public Sub Main()
      ' Define a set of Decimal values.
      Dim values() As Decimal = { 1.45d, 1.55d, 123.456789d, 123.456789d, 
                                  123.456789d, -123.456d, 
                                  New Decimal(1230000000, 0, 0, true, 7 ),
                                  New Decimal(1230000000, 0, 0, true, 7 ), 
                                  -9999999999.9999999999d, 
                                  -9999999999.9999999999d }
      ' Define a set of integers to for decimals argument.
      Dim decimals() As Integer = { 1, 1, 4, 6, 8, 0, 3, 11, 9, 10}
      
      Console.WriteLine("{0,26}{1,8}{2,26}", 
                        "Argument", "Digits", "Result" )
      Console.WriteLine("{0,26}{1,8}{2,26}", 
                        "--------", "------", "------" )
      For ctr As Integer = 0 To values.Length - 1
        Console.WriteLine("{0,26}{1,8}{2,26}", 
                          values(ctr), decimals(ctr), 
                          Decimal.Round(values(ctr), decimals(ctr)))
      Next
   End Sub
End Module
' The example displays the following output:
'                   Argument  Digits                    Result
'                   --------  ------                    ------
'                       1.45       1                       1.4
'                       1.55       1                       1.6
'                 123.456789       4                  123.4568
'                 123.456789       6                123.456789
'                 123.456789       8                123.456789
'                   -123.456       0                      -123
'               -123.0000000       3                  -123.000
'               -123.0000000      11              -123.0000000
'     -9999999999.9999999999       9    -10000000000.000000000
'     -9999999999.9999999999      10    -9999999999.9999999999

Комментарии

Этот метод эквивалентен вызову Round(Decimal, Int32, MidpointRounding) метода mode с аргументом MidpointRounding.ToEven. Если d между двумя скругленными значениями находится ровно половина, результатом является округленное значение с четной цифрой в дальней правой десятичной позиции.This method is equivalent to calling the Round(Decimal, Int32, MidpointRounding) method with a mode argument of MidpointRounding.ToEven.When d is exactly halfway between two rounded values, the result is the rounded value that has an even digit in the far right decimal position. Например, при округлении до второго знака после десятичной запятой значение 2,345 преобразуется в 2,34, а значение 2,355 — в 2,36.For example, when rounded to two decimals, the value 2.345 becomes 2.34 and the value 2.355 becomes 2.36. Этот процесс называется округлением в сторону дажеили округления банка.This process is known as rounding toward even, or banker's rounding. Он позволяет избежать ошибок округления, возникающих в результате согласованного округления среднего значения в одном направлении.It minimizes rounding errors that result from consistently rounding a midpoint value in a single direction.

Дополнительно

Round(Decimal, MidpointRounding) Round(Decimal, MidpointRounding) Round(Decimal, MidpointRounding) Round(Decimal, MidpointRounding)

Округляет десятичное значение до ближайшего целого.Rounds a decimal value to the nearest integer. Параметр задает правило округления значения, если оно находится ровно посредине между двумя другими числами.A parameter specifies how to round the value if it is midway between two other numbers.

public:
 static System::Decimal Round(System::Decimal d, MidpointRounding mode);
public static decimal Round (decimal d, MidpointRounding mode);
static member Round : decimal * MidpointRounding -> decimal
Public Shared Function Round (d As Decimal, mode As MidpointRounding) As Decimal

Параметры

d
Decimal Decimal Decimal Decimal

Округляемое десятичное число.A decimal number to round.

mode
MidpointRounding MidpointRounding MidpointRounding MidpointRounding

Значение, задающее правило округления параметра d, если его значение находится ровно посредине между двумя другими числами.A value that specifies how to round d if it is midway between two other numbers.

Возвраты

Целое число, ближайшее к значению параметра d.The integer that is nearest to the d parameter. Если d находится на равном расстоянии от двух чисел (четного и нечетного), возвращаемое число определяется по значению параметра mode.If d is halfway between two numbers, one of which is even and the other odd, the mode parameter determines which of the two numbers is returned.

Исключения

mode не является значением MidpointRounding.mode is not a MidpointRounding value.

Полученное значение находится вне допустимого диапазона объекта Decimal.The result is outside the range of a Decimal object.

Примеры

В следующем примере отображаются значения, возвращаемые Round(Decimal) методом Round(Decimal, MidpointRounding) , ToEvenметод с mode mode аргументом, а также Round(Decimal, MidpointRounding) метод с аргументом AwayFromZero.The following example displays values returned by the Round(Decimal) method, the Round(Decimal, MidpointRounding) method with a mode argument of ToEven, and the Round(Decimal, MidpointRounding) method with a mode argument of AwayFromZero.

Console.WriteLine("{0,-10} {1,-10} {2,-10} {3,-15}", "Value", "Default", 
                  "ToEven", "AwayFromZero");
for (decimal value = 12.0m; value <= 13.0m; value += 0.1m)
   Console.WriteLine("{0,-10} {1,-10} {2,-10} {3,-15}",
                     value, Math.Round(value), 
                     Math.Round(value, MidpointRounding.ToEven),
                     Math.Round(value, MidpointRounding.AwayFromZero));
// The example displays the following output:
//       Value      Default    ToEven     AwayFromZero
//       12         12         12         12
//       12.1       12         12         12
//       12.2       12         12         12
//       12.3       12         12         12
//       12.4       12         12         12
//       12.5       12         12         13
//       12.6       13         13         13
//       12.7       13         13         13
//       12.8       13         13         13
//       12.9       13         13         13
//       13.0       13         13         13
Module Example
   Public Sub Main()
      Console.WriteLine("{0,-10} {1,-10} {2,-10} {3,-15}", "Value", "Default", 
                        "ToEven", "AwayFromZero")
      For value As Decimal = 12.0d To 13.0d Step .1d
         Console.WriteLine("{0,-10} {1,-10} {2,-10} {3,-15}",
                           value, Math.Round(value), 
                           Math.Round(value, MidpointRounding.ToEven),
                           Math.Round(value, MidpointRounding.AwayFromZero))
      Next
   End Sub
End Module
' The example displays the following output:
'       Value      Default    ToEven     AwayFromZero
'       12         12         12         12
'       12.1       12         12         12
'       12.2       12         12         12
'       12.3       12         12         12
'       12.4       12         12         12
'       12.5       12         12         13
'       12.6       13         13         13
'       12.7       13         13         13
'       12.8       13         13         13
'       12.9       13         13         13
'       13.0       13         13         13

Комментарии

В средней величине значение после наименьшей значащих цифр в результате представляет собой ровно половину между двумя числами.In a midpoint value, the value after the least significant digit in the result is precisely half way between two numbers. Например, 7,5 является средним значением, если необходимо округлить до целого числа.For example, 7.5 is a midpoint value if it is to be rounded to an integer. Для средних значений ближайшее значение не может быть легко определено без соглашения о округлении, которое задается mode аргументом.For midpoint values, the nearest value can't be easily identified without a rounding convention, which is specified by the mode argument. Round Метод поддерживает два соглашения о округлении для обработки средних значений.The Round method supports two rounding conventions for handling midpoint values.

Округление от нуля.Rounding away from zero.
Средние значения округляются до следующего числа от нуля.Midpoint values are rounded to the next number away from zero. Например, 3,5 округляется до 4, 4,5 округляет до 5,-3,5 округляются до 4, а-4,5 — до-5.For example, 3.5 rounds to 4, 4.5 rounds to 5, -3.5 rounds to -4, and -4.5 rounds to -5. Эта форма округления представлена MidpointRounding.AwayFromZero членом перечисления.This form of rounding is represented by the MidpointRounding.AwayFromZero enumeration member.

Округление от нуля является наиболее широко известной формой округления.Rounding away from zero is the most widely known form of rounding.

Округление до четного или банковского округленияRounding to even, or banker's rounding
Средние значения округляются до ближайшего четного числа.Midpoint values are rounded to the nearest even number. Например, оба 3,5 и 4,5 округляются в 4, а оба-3,5 и-4,5 округляются в-4.For example, both 3.5 and 4.5 round to 4, and both -3.5 and -4.5 round to -4. Эта форма округления представлена MidpointRounding.ToEven членом перечисления.This form of rounding is represented by the MidpointRounding.ToEven enumeration member.

Округление до ближайшего представляет собой стандартную форму округления, используемую в финансовых и статистических операциях.Rounding to nearest is the standard form of rounding used in financial and statistical operations. Он соответствует стандарту IEEE 754, разделу 4.It conforms to IEEE Standard 754, section 4. При использовании в нескольких операциях округления уменьшается ошибка округления, вызванная согласованным округлением средних значений в одном направлении.When used in multiple rounding operations, it reduces the rounding error that is caused by consistently rounding midpoint values in a single direction. В некоторых случаях эта ошибка округления может быть значимой.In some cases, this rounding error can be significant.

Дополнительно

Round(Decimal, Int32, MidpointRounding) Round(Decimal, Int32, MidpointRounding) Round(Decimal, Int32, MidpointRounding) Round(Decimal, Int32, MidpointRounding)

Округляет десятичное значение с указанной точностью.Rounds a decimal value to a specified precision. Параметр задает правило округления значения, если оно находится ровно посредине между двумя другими числами.A parameter specifies how to round the value if it is midway between two other numbers.

public:
 static System::Decimal Round(System::Decimal d, int decimals, MidpointRounding mode);
public static decimal Round (decimal d, int decimals, MidpointRounding mode);
static member Round : decimal * int * MidpointRounding -> decimal
Public Shared Function Round (d As Decimal, decimals As Integer, mode As MidpointRounding) As Decimal

Параметры

d
Decimal Decimal Decimal Decimal

Округляемое десятичное число.A decimal number to round.

decimals
Int32 Int32 Int32 Int32

Количество значащих десятичных знаков дробной части числа (точность) возвращаемого значения.The number of significant decimal places (precision) in the return value.

mode
MidpointRounding MidpointRounding MidpointRounding MidpointRounding

Значение, задающее правило округления параметра d, если его значение находится ровно посредине между двумя другими числами.A value that specifies how to round d if it is midway between two other numbers.

Возвраты

Число, ближайшее к параметру d, при точности, равной значению параметра decimals.The number that is nearest to the d parameter with a precision equal to the decimals parameter. Если d находится на равном расстоянии от двух чисел (четного и нечетного), возвращаемое число определяется по значению параметра mode.If d is halfway between two numbers, one of which is even and the other odd, the mode parameter determines which of the two numbers is returned. Если точность d меньше, чем decimals, то d возвращается без изменений.If the precision of d is less than decimals, d is returned unchanged.

Исключения

Параметр decimals имеет значение меньше 0 или больше 28.decimals is less than 0 or greater than 28.

mode не является значением MidpointRounding.mode is not a MidpointRounding value.

Результат находится вне диапазона объекта Decimal.The result is outside the range of a Decimal object.

Примеры

В следующем примере показано, как использовать Round(Decimal, Int32, MidpointRounding) метод MidpointRounding с перечислением.The following example demonstrates how to use the Round(Decimal, Int32, MidpointRounding) method with the MidpointRounding enumeration.

// This example demonstrates the Math.Round() method in conjunction 
// with the MidpointRounding enumeration.
using namespace System;

void main()
{
    Decimal result = (Decimal) 0.0;
    Decimal posValue = (Decimal) 3.45;
    Decimal negValue = (Decimal) -3.45;

    // By default, round a positive and a negative value to the nearest
    // even number. The precision of the result is 1 decimal place.
    result = Math::Round(posValue, 1);
    Console::WriteLine("{0,4} = Math.Round({1,5}, 1)", result, posValue);
    result = Math::Round(negValue, 1);
    Console::WriteLine("{0,4} = Math.Round({1,5}, 1)", result, negValue);
    Console::WriteLine();

    // Round a positive value to the nearest even number, then to the
    // nearest number away from zero. The precision of the result is 1
    // decimal place.
    result = Math::Round(posValue, 1, MidpointRounding::ToEven);
    Console::WriteLine(
        "{0,4} = Math.Round({1,5}, 1, MidpointRounding.ToEven)",
        result, posValue);
    result = Math::Round(posValue, 1, MidpointRounding::AwayFromZero);
    Console::WriteLine(
        "{0,4} = Math.Round({1,5}, 1, MidpointRounding.AwayFromZero)",
        result, posValue);
    Console::WriteLine();

    // Round a negative value to the nearest even number, then to the
    // nearest number away from zero. The precision of the result is 1
    // decimal place.
    result = Math::Round(negValue, 1, MidpointRounding::ToEven);
    Console::WriteLine(
        "{0,4} = Math.Round({1,5}, 1, MidpointRounding.ToEven)",
        result, negValue);
    result = Math::Round(negValue, 1, MidpointRounding::AwayFromZero);
    Console::WriteLine(
        "{0,4} = Math.Round({1,5}, 1, MidpointRounding.AwayFromZero)",
        result, negValue);
    Console::WriteLine();
}

/*
This code example produces the following results:

3.4 = Math.Round( 3.45, 1)
-3.4 = Math.Round(-3.45, 1)

3.4 = Math.Round( 3.45, 1, MidpointRounding.ToEven)
3.5 = Math.Round( 3.45, 1, MidpointRounding.AwayFromZero)

-3.4 = Math.Round(-3.45, 1, MidpointRounding.ToEven)
-3.5 = Math.Round(-3.45, 1, MidpointRounding.AwayFromZero)

*/
decimal result = 0.0m;
decimal posValue =  3.45m;
decimal negValue = -3.45m;

// By default, round a positive and a negative value to the nearest even number. 
// The precision of the result is 1 decimal place.

result = Math.Round(posValue, 1);
Console.WriteLine("{0,4} = Math.Round({1,5}, 1)", result, posValue);
result = Math.Round(negValue, 1);
Console.WriteLine("{0,4} = Math.Round({1,5}, 1)", result, negValue);
Console.WriteLine();

// Round a positive value to the nearest even number, then to the nearest number away from zero. 
// The precision of the result is 1 decimal place.

result = Math.Round(posValue, 1, MidpointRounding.ToEven);
Console.WriteLine("{0,4} = Math.Round({1,5}, 1, MidpointRounding.ToEven)", result, posValue);
result = Math.Round(posValue, 1, MidpointRounding.AwayFromZero);
Console.WriteLine("{0,4} = Math.Round({1,5}, 1, MidpointRounding.AwayFromZero)", result, posValue);
Console.WriteLine();

// Round a negative value to the nearest even number, then to the nearest number away from zero. 
// The precision of the result is 1 decimal place.

result = Math.Round(negValue, 1, MidpointRounding.ToEven);
Console.WriteLine("{0,4} = Math.Round({1,5}, 1, MidpointRounding.ToEven)", result, negValue);
result = Math.Round(negValue, 1, MidpointRounding.AwayFromZero);
Console.WriteLine("{0,4} = Math.Round({1,5}, 1, MidpointRounding.AwayFromZero)", result, negValue);
Console.WriteLine();
/*
This code example produces the following results:

3.4 = Math.Round( 3.45, 1)
-3.4 = Math.Round(-3.45, 1)

3.4 = Math.Round( 3.45, 1, MidpointRounding.ToEven)
3.5 = Math.Round( 3.45, 1, MidpointRounding.AwayFromZero)

-3.4 = Math.Round(-3.45, 1, MidpointRounding.ToEven)
-3.5 = Math.Round(-3.45, 1, MidpointRounding.AwayFromZero)

*/
' This example demonstrates the Math.Round() method in conjunction 
' with the MidpointRounding enumeration.
Class Sample
    Public Shared Sub Main() 
        Dim result As Decimal = 0D
        Dim posValue As Decimal = 3.45D
        Dim negValue As Decimal = -3.45D
        
        ' By default, round a positive and a negative value to the nearest even number. 
        ' The precision of the result is 1 decimal place.
        result = Math.Round(posValue, 1)
        Console.WriteLine("{0,4} = Math.Round({1,5}, 1)", result, posValue)
        result = Math.Round(negValue, 1)
        Console.WriteLine("{0,4} = Math.Round({1,5}, 1)", result, negValue)
        Console.WriteLine()
        
        ' Round a positive value to the nearest even number, then to the nearest number 
        ' away from zero. The precision of the result is 1 decimal place.
        result = Math.Round(posValue, 1, MidpointRounding.ToEven)
        Console.WriteLine("{0,4} = Math.Round({1,5}, 1, MidpointRounding.ToEven)", _
                           result, posValue)
        result = Math.Round(posValue, 1, MidpointRounding.AwayFromZero)
        Console.WriteLine("{0,4} = Math.Round({1,5}, 1, MidpointRounding.AwayFromZero)", _
                           result, posValue)
        Console.WriteLine()
        
        ' Round a negative value to the nearest even number, then to the nearest number 
        ' away from zero. The precision of the result is 1 decimal place.
        result = Math.Round(negValue, 1, MidpointRounding.ToEven)
        Console.WriteLine("{0,4} = Math.Round({1,5}, 1, MidpointRounding.ToEven)", _
                            result, negValue)
        result = Math.Round(negValue, 1, MidpointRounding.AwayFromZero)
        Console.WriteLine("{0,4} = Math.Round({1,5}, 1, MidpointRounding.AwayFromZero)", _
                           result, negValue)
        Console.WriteLine()
    
    End Sub
End Class
'
'This code example produces the following results:
'
' 3.4 = Math.Round( 3.45, 1)
'-3.4 = Math.Round(-3.45, 1)
'
' 3.4 = Math.Round( 3.45, 1, MidpointRounding.ToEven)
' 3.5 = Math.Round( 3.45, 1, MidpointRounding.AwayFromZero)
'
'-3.4 = Math.Round(-3.45, 1, MidpointRounding.ToEven)
'-3.5 = Math.Round(-3.45, 1, MidpointRounding.AwayFromZero)
'

Комментарии

decimals Параметр задает количество значащих десятичных разрядов в возвращаемом значении и диапазон от 0 до 28.The decimals parameter specifies the number of significant decimal places in the return value and ranges from 0 to 28. Если decimals значение равно нулю, возвращается целое число.If decimals is zero, an integer is returned.

В средней величине значение после наименьшей значащих цифр в результате представляет собой ровно половину между двумя числами.In a midpoint value, the value after the least significant digit in the result is precisely half way between two numbers. Например, 3,47500 является средним значением, если необходимо округлить два десятичных знака, а 7,500 — среднее значение, если необходимо округлить до целого числа.For example, 3.47500 is a midpoint value if it is to be rounded two decimal places, and 7.500 is a midpoint value if it is to be rounded to an integer. В этих случаях ближайшее значение не может быть легко определено без соглашения о округлении, которое mode определяется аргументом.In these cases, the nearest value can't be easily identified without a rounding convention, which is specified by the mode argument. Round(Decimal, Int32, MidpointRounding) Метод поддерживает два соглашения о округлении для обработки средних значений.The Round(Decimal, Int32, MidpointRounding) method supports two rounding conventions for handling midpoint values.

Округление от нуля.Rounding away from zero.
Средние значения округляются до следующего числа от нуля.Midpoint values are rounded to the next number away from zero. Например, 3,75 округляется до 3,8, 3,85 округляет до 3,9,-3,75 округляются до-3,8, а-3,85 округляются до-3,9.For example, 3.75 rounds to 3.8, 3.85 rounds to 3.9, -3.75 rounds to -3.8, and -3.85 rounds to -3.9. Эта форма округления представлена MidpointRounding.AwayFromZero членом перечисления.This form of rounding is represented by the MidpointRounding.AwayFromZero enumeration member.

Округление от нуля является наиболее широко известной формой округления.Rounding away from zero is the most widely known form of rounding.

Округление до четного или банковского округленияRounding to even, or banker's rounding
Средние значения округляются до ближайшего четного числа.Midpoint values are rounded to the nearest even number. Например, 3,75 и 3,85 округляются в 3,8, а обе-3,75 и-3,85 округляются в-3,8.For example, both 3.75 and 3.85 round to 3.8, and both -3.75 and -3.85 round to -3.8. Эта форма округления представлена MidpointRounding.ToEven членом перечисления.This form of rounding is represented by the MidpointRounding.ToEven enumeration member.

Округление до ближайшего представляет собой стандартную форму округления, используемую в финансовых и статистических операциях.Rounding to nearest is the standard form of rounding used in financial and statistical operations. Он соответствует стандарту IEEE 754, разделу 4.It conforms to IEEE Standard 754, section 4. При использовании в нескольких операциях округления уменьшается ошибка округления, вызванная согласованным округлением средних значений в одном направлении.When used in multiple rounding operations, it reduces the rounding error that is caused by consistently rounding midpoint values in a single direction. В некоторых случаях эта ошибка округления может быть значимой.In some cases, this rounding error can be significant.

Дополнительно

Применяется к