MidpointRounding Sabit listesi

Tanım

Matematiksel yuvarlama yöntemlerinin bir sayıyı yuvarlarken kullanması gereken stratejiyi belirtir.

public enum class MidpointRounding
public enum MidpointRounding
[System.Runtime.InteropServices.ComVisible(true)]
public enum MidpointRounding
type MidpointRounding = 
[<System.Runtime.InteropServices.ComVisible(true)>]
type MidpointRounding = 
Public Enum MidpointRounding
Devralma
MidpointRounding
Öznitelikler

Alanlar

Name Değer Description
ToEven 0

En yakın sayıya yuvarlama stratejisi ve bir sayı diğer iki sayı arasında yarıya indiğinde, en yakın çift sayıya doğru yuvarlanir.

AwayFromZero 1

En yakın sayıya yuvarlama stratejisi ve bir sayı diğer iki sayı arasında yarıya indiğinde sıfırdan uzak olan en yakın sayıya doğru yuvarlanır.

ToZero 2

Sıfıra doğru yönlendirilmiş yuvarlama stratejisi, sonuç sonsuz kesin sonuca en yakın ve en büyük değere sahip değildir.

ToNegativeInfinity 3

Aşağı yönlü yuvarlama stratejisi, sonuç sonsuz kesin sonuca en yakın ve bundan büyük değil.

ToPositiveInfinity 4

Yukarı doğru yönlü yuvarlama stratejisi, sonuç sonsuz kesin sonuca en yakın ve en azı değil.

Örnekler

Aşağıdaki örnekte, sabit listesiyle Math.Round birlikte yöntemi gösterilmektedirMidpointRounding:

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)
*/
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)
'

Açıklamalar

MidpointRounding numaralandırmasını, Math.Round, MathF.Round ve Decimal.Round öğelerinin uygun aşırı yüklemeleriyle birlikte, yuvarlama işlemini daha fazla kontrol altına almak için kullanın.

İki genel yuvarlama stratejisi vardır—en yakın yuvarlama ve yönlendirilmiş yuvarlama—ve her numaralandırma alanı bu stratejilerden tam olarak birine katılır.

En yakına yuvarla

Fields:

En yakına yuvarlama işlemi, özgün bir sayıyı örtük veya belirtilmiş bir duyarlıkla alır; duyarlık seviyesinin bir fazlasındaki basamağı inceler; ve özgün sayıyla aynı duyarlıkta en yakın sayıyı döndürür. Pozitif sayılar için, sonraki basamak 0 ile 4 arasındaysa, en yakın sayı negatif sonsuzluğa doğru olur. Sonraki basamak 6 ile 9 arasındaysa, en yakın sayı pozitif sonsuzluğa doğru olur. Negatif sayılar için, bir sonraki basamak 0 ile 4 arasındaysa, en yakın sayı pozitif sonsuzluğa doğru olur. Sonraki basamak 6 ile 9 arasındaysa, en yakın sayı negatif sonsuzluğa doğru olur.

Sonraki basamak 0 ile 4 veya 6 ile 9 arasındaysa, MidpointRounding.AwayFromZero ve MidpointRounding.ToEven yuvarlama işleminin sonucunu etkilemez. Ancak, sonraki basamak 5 ise ve iki olası sonuç arasındaki orta nokta ise ve kalan tüm basamaklar sıfırsa veya kalan basamak yoksa, en yakın sayı belirsizdir. Bu durumda içindeki en yakına yuvarlama modları MidpointRounding , yuvarlama işleminin sıfırdan uzak en yakın sayıyı mı yoksa en yakın çift sayıyı mı döndüreceğini belirtmenizi sağlar.

Aşağıdaki tabloda, bazı negatif ve pozitif sayıları en yakın modlarla birlikte yuvarlamanın sonuçları gösterilmektedir. Sayıları yuvarlamada kullanılan duyarlık sıfırdır, yani ondalık ayırıcıdan sonraki sayı yuvarlama işlemini etkiler. Örneğin, -2,5 sayısı için ondalık ayırıcıdan sonraki basamak 5'tir. Bu basamak orta nokta olduğundan, yuvarlamanın sonucunu belirlemek için bir MidpointRounding değer kullanabilirsiniz. Eğer AwayFromZero belirtilmişse, sıfır hassasiyetle sıfırdan en yakın sayı olduğu için -3 döndürülür. Eğer ToEven belirtilirse, sıfır duyarlıklı en yakın çift sayı olduğundan -2 döndürülür.

Özgün numara AwayFromZero ToEven
3.5 4 4
2.8 3 3
2.5 3 2
2.1 2 2
-2.1 -2 -2
-2.5 -3 -2
-2.8 -3 -3
-3.5 -4 -4

Yönlendirilmiş yuvarlama

Fields:

Yönlendirilmiş yuvarlama işlemi, gizli ya da belirtilmiş bir duyarlığa sahip özgün bir sayıyı alır ve özgün sayıyla aynı duyarlıkta, belirli bir yönde bir sonraki en yakın sayıyı verir. Yuvarlamanın önceden belirlenmiş bir sayıya doğru yapıldığı kontrol modları MidpointRounding yönlendirilmiştir.

Aşağıdaki tabloda, yönlendirilmiş yuvarlama modlarıyla birlikte bazı negatif ve pozitif sayıları yuvarlamanın sonuçları gösterilmektedir. Sayıları yuvarlamada kullanılan duyarlık sıfırdır, yani virgülden önceki sayı yuvarlama işlemiyle etkilenir.

Özgün numara Negatif Sonsuzluğa ToPositiveInfinity ToZero
3.5 3 4 3
2.8 2 3 2
2.5 2 3 2
2.1 2 3 2
-2.1 -3 -2 -2
-2.5 -3 -2 -2
-2.8 -3 -2 -2
-3.5 -4 -3 -3

Şunlara uygulanır