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)

10 進値を最も近い整数に丸めます。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)

10 進値を最も近い整数に丸めます。Rounds a decimal value to the nearest integer. パラメーターは、値が他の 2 つの数値の中間にある場合にその値を丸める方法を指定します。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)

10 進値を指定した精度に丸めます。Rounds a decimal value to a specified precision. パラメーターは、値が他の 2 つの数値の中間にある場合にその値を丸める方法を指定します。A parameter specifies how to round the value if it is midway between two other numbers.

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

10 進値を最も近い整数に丸めます。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

丸め対象の 10 進数。A decimal number to round.

戻り値

d パラメーターの値に最も近い整数。The integer that is nearest to the d parameter. d が 2 つの整数 (一方が偶数でもう一方が奇数) の中間にある場合は偶数が返されます。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.

次の例では、100 Decimal ~ 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 Standard 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) MidpointRounding.ToEven引数をmode指定してメソッドを呼び出すことと同じです。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

丸め対象の 10 進数。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.

戻り値

小数点以下の桁数 decimals に丸められた d と等価の 10 進数。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.

次の例ではDecimalRoundメソッドを使用して、指定した小数点以下の桁数に複数の値を丸めます。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)引数MidpointRounding.ToEvenmode指定してメソッドを呼び出すことと同じです。がd 2 つの丸められた値の中間にある場合、結果は、右端の小数点位置に偶数の数字を持つ丸められた値になります。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 桁に丸められる場合、値 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)

10 進値を最も近い整数に丸めます。Rounds a decimal value to the nearest integer. パラメーターは、値が他の 2 つの数値の中間にある場合にその値を丸める方法を指定します。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

丸め対象の 10 進数。A decimal number to round.

mode
MidpointRounding MidpointRounding MidpointRounding MidpointRounding

d が他の 2 つの数値の中間にある場合に丸める方法を指定する値。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 が 2 つの数値 (一方が偶数でもう一方が奇数) の中間にある場合、mode パラメーターで 2 つの数値のどちらを返すかを決定します。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.

例外

結果は Decimal オブジェクトの範囲外です。The result is outside the range of a Decimal object.

次の例でRound(Decimal)は、メソッドによって返される値Round(Decimal, MidpointRounding)modeToEven引数を持つメソッドRound(Decimal, MidpointRounding) 、および引数mode 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

注釈

中間値では、結果の最下位の数字の後の値は、2つの数値の間の中間方向になります。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では、中間値を処理するための丸め規則が2つサポートされています。The Round method supports two rounding conventions for handling midpoint values.

0から丸めます。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.

0からの丸め処理は、最も広く知られている丸め形式です。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 Standard 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)

10 進値を指定した精度に丸めます。Rounds a decimal value to a specified precision. パラメーターは、値が他の 2 つの数値の中間にある場合にその値を丸める方法を指定します。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

丸め対象の 10 進数。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 が他の 2 つの数値の中間にある場合に丸める方法を指定する値。A value that specifies how to round d if it is midway between two other numbers.

戻り値

decimals パラメーターと精度が等価である d パラメーターの値に最も近い数値。The number that is nearest to the d parameter with a precision equal to the decimals parameter. d が 2 つの数値 (一方が偶数でもう一方が奇数) の中間にある場合、mode パラメーターで 2 つの数値のどちらを返すかを決定します。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.

結果は 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 'Sample
'
'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 0 の場合は、整数が返されます。If decimals is zero, an integer is returned.

中間値では、結果の最下位の数字の後の値は、2つの数値の間の中間方向になります。In a midpoint value, the value after the least significant digit in the result is precisely half way between two numbers. たとえば、3.47500 は小数点以下2桁に丸められる場合は中間値、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)では、中間値を処理するための丸め規則が2つサポートされています。The Round(Decimal, Int32, MidpointRounding) method supports two rounding conventions for handling midpoint values.

0から丸めます。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.

0からの丸め処理は、最も広く知られている丸め形式です。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 Standard 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.

こちらもご覧ください

適用対象