Ағылшын тілінде оқу

Бөлісу құралы:


Decimal.Round Метод

Определение

Округляет значение до ближайшего целого или указанного количества десятичных знаков.

Перегрузки

Round(Decimal, Int32, MidpointRounding)

Округляет десятичное значение до указанной точности, используя указанную стратегию округления.

Round(Decimal, MidpointRounding)

Округляет десятичное значение до целого числа, используя указанную стратегию округления.

Round(Decimal)

Округляет десятичное значение до ближайшего целого.

Round(Decimal, Int32)

Округляет значение Decimal до указанного числа десятичных знаков.

Round(Decimal, Int32, MidpointRounding)

Исходный код:
Decimal.cs
Исходный код:
Decimal.cs
Исходный код:
Decimal.cs

Округляет десятичное значение до указанной точности, используя указанную стратегию округления.

public static decimal Round (decimal d, int decimals, MidpointRounding mode);

Параметры

d
Decimal

Округляемое десятичное число.

decimals
Int32

Количество значащих десятичных знаков дробной части числа (точность) возвращаемого значения.

mode
MidpointRounding

Одно из значений перечисления, указывающее используемую стратегию округления.

Возвращаемое значение

Число, округляемое d до с помощью mode стратегии округления с точностью decimalsдо . Если точность d меньше, чем decimals, то d возвращается без изменений.

Реализации

Исключения

Параметр decimals имеет значение меньше 0 или больше 28.

mode не является значением MidpointRounding.

Полученное значение находится вне допустимого диапазона объекта Decimal.

Примеры

В следующем примере показано, как использовать Round(Decimal, Int32, MidpointRounding) метод с перечислением MidpointRounding .

decimal result;

// Round a positive value using different strategies.
// The precision of the result is 1 decimal place.

result = Math.Round(3.45m, 1, MidpointRounding.ToEven);
Console.WriteLine($"{result} = Math.Round({3.45m}, 1, MidpointRounding.ToEven)");
result = Math.Round(3.45m, 1, MidpointRounding.AwayFromZero);
Console.WriteLine($"{result} = Math.Round({3.45m}, 1, MidpointRounding.AwayFromZero)");
result = Math.Round(3.47m, 1, MidpointRounding.ToZero);
Console.WriteLine($"{result} = Math.Round({3.47m}, 1, MidpointRounding.ToZero)\n");

// Round a negative value using different strategies.
// The precision of the result is 1 decimal place.

result = Math.Round(-3.45m, 1, MidpointRounding.ToEven);
Console.WriteLine($"{result} = Math.Round({-3.45m}, 1, MidpointRounding.ToEven)");
result = Math.Round(-3.45m, 1, MidpointRounding.AwayFromZero);
Console.WriteLine($"{result} = Math.Round({-3.45m}, 1, MidpointRounding.AwayFromZero)");
result = Math.Round(-3.47m, 1, MidpointRounding.ToZero);
Console.WriteLine($"{result} = Math.Round({-3.47m}, 1, MidpointRounding.ToZero)\n");

/*
This code example produces the following results:

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

-3.4 = Math.Round(-3.45, 1, MidpointRounding.ToEven)
-3.5 = Math.Round(-3.45, 1, MidpointRounding.AwayFromZero)
-3.4 = Math.Round(-3.47, 1, MidpointRounding.ToZero)
*/

Комментарии

Параметр decimals указывает количество знаков после запятой в возвращаемом значении в диапазоне от 0 до 28. Если decimals равно нулю, возвращается целое число.

Если указать ToEven или AwayFromZero для mode параметра, эти стратегии округления применяются только для средних значений, то есть значений, наименее значимая цифра которых составляет 5.

См. также раздел

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

.NET 9 және басқа нұсқалар
Өнім Нұсқалар
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Round(Decimal, MidpointRounding)

Исходный код:
Decimal.cs
Исходный код:
Decimal.cs
Исходный код:
Decimal.cs

Округляет десятичное значение до целого числа, используя указанную стратегию округления.

public static decimal Round (decimal d, MidpointRounding mode);

Параметры

d
Decimal

Округляемое десятичное число.

mode
MidpointRounding

Одно из значений перечисления, указывающее используемую стратегию округления.

Возвращаемое значение

Целое число, d округляемое до с помощью mode стратегии округления.

Реализации

Исключения

mode не является значением MidpointRounding.

Полученное значение находится вне допустимого диапазона объекта Decimal.

Примеры

В следующем примере отображаются значения, возвращаемые методом Round(Decimal, MidpointRounding) с разными mode аргументами.

Console.WriteLine($"{"Value",-10} {"Default",-10} {"ToEven",-10} {"AwayFromZero",-15} {"ToZero",-15}");
for (decimal value = 12.0m; value <= 13.0m; value += 0.1m)
    Console.WriteLine($"{value,-10} {Math.Round(value),-10} " +
        $"{Math.Round(value, MidpointRounding.ToEven),-10} " +
        $"{Math.Round(value, MidpointRounding.AwayFromZero),-15} " +
        $"{Math.Round(value, MidpointRounding.ToZero),-15}");

// The example displays the following output:
//       Value      Default    ToEven     AwayFromZero    ToZero
//       12.0       12         12         12              12
//       12.1       12         12         12              12
//       12.2       12         12         12              12
//       12.3       12         12         12              12
//       12.4       12         12         12              12
//       12.5       12         12         13              12
//       12.6       13         13         13              12
//       12.7       13         13         13              12
//       12.8       13         13         13              12
//       12.9       13         13         13              12
//       13.0       13         13         13              13

Комментарии

Если указать ToEven или AwayFromZero для mode параметра, эти стратегии округления применяются только для средних значений, то есть значений, наименее значимая цифра которых составляет 5.

См. также раздел

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

.NET 9 және басқа нұсқалар
Өнім Нұсқалар
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Round(Decimal)

Исходный код:
Decimal.cs
Исходный код:
Decimal.cs
Исходный код:
Decimal.cs

Округляет десятичное значение до ближайшего целого.

public static decimal Round (decimal d);

Параметры

d
Decimal

Округляемое десятичное число.

Возвращаемое значение

Целое число, ближайшее к значению параметра d. Если d находится на равном расстоянии от двух целых чисел (четного и нечетного), возвращается четное число.

Реализации

Исключения

Результат находится вне диапазона значения Decimal.

Примеры

В следующем примере диапазон значений Decimal от 100 до 102 округляется до ближайшего целого числа. Поскольку метод использует округление банкира, 100,5 округляется до 100, а 101,5 округляется до 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

Комментарии

Поведение этого метода соответствует стандарту IEEE 754, раздел 4. Этот вид округления иногда называют округлением половины или четнымокруглением банкира. Это позволяет свести к минимуму ошибки округления, которые возникают в результате последовательного округления средней точки в одном направлении. Это эквивалентно вызову Round(Decimal, MidpointRounding) метода с аргументом modeMidpointRounding.ToEven.

См. также раздел

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

.NET 9 және басқа нұсқалар
Өнім Нұсқалар
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Round(Decimal, Int32)

Исходный код:
Decimal.cs
Исходный код:
Decimal.cs
Исходный код:
Decimal.cs

Округляет значение Decimal до указанного числа десятичных знаков.

public static decimal Round (decimal d, int decimals);

Параметры

d
Decimal

Округляемое десятичное число.

decimals
Int32

Значение от 0 до 28, задающее число десятичных знаков, до которого необходимо округлить значение.

Возвращаемое значение

Десятичное число, d эквивалентное округленным до decimals десятичных разрядов.

Реализации

Исключения

decimals не в диапазоне от 0 до 28.

Примеры

В следующем примере несколько значений округляется Decimal до указанного числа десятичных разрядов с помощью Round метода .

using System;

class Example12
{
   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

Комментарии

Этот метод эквивалентен вызову Round(Decimal, Int32, MidpointRounding) метода с аргументом modeMidpointRounding.ToEven. Если d находится ровно на полпути между двумя скругленными значениями, результатом будет округленное значение, которое имеет четную цифру в крайней правой десятичной позиции. Например, при округлении до второго знака после десятичной запятой значение 2,345 преобразуется в 2,34, а значение 2,355 — в 2,36. Этот процесс известен как округление в сторону четного, или округление банкира. Это позволяет свести к минимуму ошибки округления, которые возникают в результате последовательного округления средней точки в одном направлении.

См. также раздел

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

.NET 9 және басқа нұсқалар
Өнім Нұсқалар
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1