Decimal.Round Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Rundet einen Wert auf die nächste ganze Zahl oder die angegebene Anzahl von Dezimalstellen ab.
Überlädt
| Name | Beschreibung |
|---|---|
| Round(Decimal, Int32, MidpointRounding) |
Rundet einen Dezimalwert mithilfe der angegebenen Rundungsstrategie auf die angegebene Genauigkeit. |
| Round(Decimal, MidpointRounding) |
Rundet einen Dezimalwert mithilfe der angegebenen Rundungsstrategie auf eine ganze Zahl. |
| Round(Decimal) |
Rundet einen Dezimalwert auf die nächste ganze Zahl. |
| Round(Decimal, Int32) |
Rundet einen Decimal Wert auf eine angegebene Anzahl von Dezimalstellen. |
Round(Decimal, Int32, MidpointRounding)
- Quelle:
- Decimal.cs
- Quelle:
- Decimal.cs
- Quelle:
- Decimal.cs
- Quelle:
- Decimal.cs
- Quelle:
- Decimal.cs
Rundet einen Dezimalwert mithilfe der angegebenen Rundungsstrategie auf die angegebene Genauigkeit.
public:
static System::Decimal Round(System::Decimal d, int decimals, MidpointRounding mode) = System::Numerics::IFloatingPoint<System::Decimal>::Round;
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
Parameter
- d
- Decimal
Eine dezimale Zahl, die gerundet werden soll.
- decimals
- Int32
Die Anzahl der signifikanten Dezimalstellen (Genauigkeit) im Rückgabewert.
- mode
- MidpointRounding
Einer der Enumerationswerte, der angibt, welche Rundungsstrategie verwendet werden soll.
Gibt zurück
Die Zahl, die d mit der mode Rundungsstrategie gerundet wird und mit einer Genauigkeit von decimals. Wenn die Genauigkeit d kleiner als decimalsist, d wird unverändert zurückgegeben.
Implementiert
Ausnahmen
decimals ist kleiner als 0 oder größer als 28.
mode ist kein MidpointRounding Wert.
Das Ergebnis liegt außerhalb des Bereichs eines Decimal Objekts.
Beispiele
Im folgenden Beispiel wird die Verwendung der Methode mit der Round(Decimal, Int32, MidpointRounding)MidpointRounding Enumeration veranschaulicht.
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)
*/
// Round a positive value using different strategies.
// The precision of the result is 1 decimal place.
let result = Math.Round(3.45m, 1, MidpointRounding.ToEven)
printfn $"{result} = Math.Round({3.45m}, 1, MidpointRounding.ToEven)"
let result = Math.Round(3.45m, 1, MidpointRounding.AwayFromZero)
printfn $"{result} = Math.Round({3.45m}, 1, MidpointRounding.AwayFromZero)"
let result = Math.Round(3.47m, 1, MidpointRounding.ToZero)
printfn $"{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.
let result = Math.Round(-3.45m, 1, MidpointRounding.ToEven)
printfn $"{result} = Math.Round({-3.45m}, 1, MidpointRounding.ToEven)"
let result = Math.Round(-3.45m, 1, MidpointRounding.AwayFromZero)
printfn $"{result} = Math.Round({-3.45m}, 1, MidpointRounding.AwayFromZero)"
let result = Math.Round(-3.47m, 1, MidpointRounding.ToZero)
printfn $"{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)
Dim result As Decimal = 0D
Dim posValue As Decimal = 3.45D
Dim negValue As Decimal = -3.45D
' Round a positive value using different strategies.
' 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)
result = Math.Round(posValue, 1, MidpointRounding.ToZero)
Console.WriteLine("{0,4} = Math.Round({1,5}, 1, MidpointRounding.ToZero)",
result, posValue)
Console.WriteLine()
' Round a negative value using different strategies.
' 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)
result = Math.Round(negValue, 1, MidpointRounding.ToZero)
Console.WriteLine("{0,4} = Math.Round({1,5}, 1, MidpointRounding.ToZero)",
result, negValue)
Console.WriteLine()
'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.45, 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.45, 1, MidpointRounding.ToZero)
'
Hinweise
Der decimals Parameter gibt die Anzahl der signifikanten Dezimalstellen im Rückgabewert an und reicht von 0 bis 28. Wenn decimals null ist, wird eine ganze Zahl zurückgegeben.
Wenn Sie den ToEven Parameter angeben AwayFromZero oder mode angeben, werden diese Rundungsstrategien nur für Mittelpunktswerte angewendet, d. h. Werte, deren kleinste Signifikante 5 ist.
Weitere Informationen
Gilt für:
Round(Decimal, MidpointRounding)
- Quelle:
- Decimal.cs
- Quelle:
- Decimal.cs
- Quelle:
- Decimal.cs
- Quelle:
- Decimal.cs
- Quelle:
- Decimal.cs
Rundet einen Dezimalwert mithilfe der angegebenen Rundungsstrategie auf eine ganze Zahl.
public:
static System::Decimal Round(System::Decimal d, MidpointRounding mode) = System::Numerics::IFloatingPoint<System::Decimal>::Round;
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
Parameter
- d
- Decimal
Eine dezimale Zahl, die gerundet werden soll.
- mode
- MidpointRounding
Einer der Enumerationswerte, der angibt, welche Rundungsstrategie verwendet werden soll.
Gibt zurück
Die ganze Zahl, die d auf die Verwendung der mode Rundungsstrategie gerundet wird.
Implementiert
Ausnahmen
mode ist kein MidpointRounding Wert.
Das Ergebnis liegt außerhalb des Bereichs eines Decimal Objekts.
Beispiele
Im folgenden Beispiel werden werte angezeigt, die von der Round(Decimal, MidpointRounding) Methode mit unterschiedlichen mode Argumenten zurückgegeben werden.
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
printfn $"""{"Value",-10} {"Default",-10} {"ToEven",-10} {"AwayFromZero",-15} {"ToZero",-15}"""
for value in 12m .. 0.1m .. 13m do
printfn "%-10O %-10O %-10O %-15O %-15O"
value
(Math.Round value)
(Math.Round(value, MidpointRounding.ToEven))
(Math.Round(value, MidpointRounding.AwayFromZero))
(Math.Round(value, MidpointRounding.ToZero))
// 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
Console.WriteLine("{0,-10} {1,-10} {2,-10} {3,-15} {4,-15}", "Value", "Default",
"ToEven", "AwayFromZero", "ToZero")
For value As Decimal = 12D To 13D Step 0.1D
Console.WriteLine("{0,-10} {1,-10} {2,-10} {3,-15} {4,-15}",
value, Math.Round(value),
Math.Round(value, MidpointRounding.ToEven),
Math.Round(value, MidpointRounding.AwayFromZero),
Math.Round(value, MidpointRounding.ToZero))
Next
' The example displays the following output:
' Value Default ToEven AwayFromZero ToZero
' 12 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
Hinweise
Wenn Sie den ToEven Parameter angeben AwayFromZero oder mode angeben, werden diese Rundungsstrategien nur für Mittelpunktswerte angewendet, d. h. Werte, deren kleinste Signifikante 5 ist.
Weitere Informationen
Gilt für:
Round(Decimal)
- Quelle:
- Decimal.cs
- Quelle:
- Decimal.cs
- Quelle:
- Decimal.cs
- Quelle:
- Decimal.cs
- Quelle:
- Decimal.cs
Rundet einen Dezimalwert auf die nächste ganze Zahl.
public:
static System::Decimal Round(System::Decimal d) = System::Numerics::IFloatingPoint<System::Decimal>::Round;
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
Parameter
- d
- Decimal
Eine dezimale Zahl, die gerundet werden soll.
Gibt zurück
Die ganze Zahl, die dem d Parameter am nächsten ist. Wenn d die Hälfte zwischen zwei ganzzahligen Zahlen liegt, von denen eine gerade und die andere ungerade ist, wird die gerade Zahl zurückgegeben.
Implementiert
Ausnahmen
Das Ergebnis liegt außerhalb des Bereichs eines Decimal Werts.
Beispiele
Im folgenden Beispiel wird ein Wertebereich Decimal zwischen 100 und 102 auf die nächste ganze Zahl gerundet. Da die Methode die Rundung des Bankers verwendet, runden 100,5 auf 100 und 101,5 Runden auf 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
open System
for value in 100m .. 0.1m .. 102m do
printfn $"{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 Run()
For value As Decimal = 100D To 102D Step 0.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
Hinweise
Das Verhalten dieser Methode folgt IEEE Standard 754, Abschnitt 4. Diese Art von Rundung wird manchmal rund um die Hälfte bis zumRunden des Bankers bezeichnet. Dadurch werden Rundungsfehler minimiert, die dazu führen, dass ein Mittelpunktswert in einer einzelnen Richtung konsistent gerundet wird. Es entspricht dem Aufrufen der Round(Decimal, MidpointRounding) Methode mit einem mode Argument von MidpointRounding.ToEven.
Weitere Informationen
Gilt für:
Round(Decimal, Int32)
- Quelle:
- Decimal.cs
- Quelle:
- Decimal.cs
- Quelle:
- Decimal.cs
- Quelle:
- Decimal.cs
- Quelle:
- Decimal.cs
Rundet einen Decimal Wert auf eine angegebene Anzahl von Dezimalstellen.
public:
static System::Decimal Round(System::Decimal d, int decimals) = System::Numerics::IFloatingPoint<System::Decimal>::Round;
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
Parameter
- d
- Decimal
Eine dezimale Zahl, die gerundet werden soll.
- decimals
- Int32
Ein Wert von 0 bis 28, der die Anzahl der Dezimalstellen angibt, auf die gerundet werden soll.
Gibt zurück
Die Dezimalzahl, die auf Dezimalstellen gerundet ist ddecimals .
Implementiert
Ausnahmen
decimals ist kein Wert von 0 bis 28.
Beispiele
Im folgenden Beispiel werden mehrere Decimal Werte mithilfe der Round Methode auf eine angegebene Anzahl von Dezimalstellen gerundet.
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
open System
// Define a set of Decimal values.
let values =
[ 1.45m; 1.55m; 123.456789m; 123.456789m
123.456789m; -123.456m
Decimal(1230000000, 0, 0, true, 7uy)
Decimal(1230000000, 0, 0, true, 7uy)
-9999999999.9999999999m
-9999999999.9999999999m ]
// Define a set of integers to for decimals argument.
let decimals =
[ 1; 1; 4; 6; 8; 0; 3; 11; 9; 10 ]
printfn $"""{"Argument",26}{"Digits",8}{"Result",26}"""
printfn $"""{"--------",26}{"------",8}{"------",26}"""
for i = 0 to values.Length - 1 do
printfn $"{values[i],26}{decimals[i],8}{Decimal.Round(values[i], decimals[i]),26}"
// 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 Example12
Public Sub Run()
' 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
Hinweise
Diese Methode entspricht dem Aufrufen der Round(Decimal, Int32, MidpointRounding) Methode mit einem mode Argument von MidpointRounding.ToEven. Wenn d genau die Hälfte zwischen zwei gerundeten Werten liegt, ist das Ergebnis der gerundete Wert, der eine gerade Ziffer in der ganz rechten Dezimalposition aufweist. Wenn der Wert beispielsweise auf zwei Dezimalstellen gerundet wird, wird der Wert 2,345 2,34 und der Wert 2,355 wird zu 2,36. Dieser Prozess wird als Rundung auf gerade oder Banker-Rundung bezeichnet. Dadurch werden Rundungsfehler minimiert, die dazu führen, dass ein Mittelpunktswert in einer einzelnen Richtung konsistent gerundet wird.