MidpointRounding Sabit listesi
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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
- Öznitelikler
Alanlar
| Name | Değer | Description |
|---|---|---|
| ToEven | 0 | En yakın sayıya yuvarlama stratejisi. Sayı diğer iki sayı arasında yarıya indiğinde, en yakın çift sayıya doğru yuvarlanir. Orta nokta olmayan değerler bu seçimden etkilenmez ve en yakın temsil edilebilir değere yuvarlanir. Bankacı yuvarlama olarak da bilinir. |
| AwayFromZero | 1 | En yakın sayıya yuvarlama stratejisi. 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. Orta nokta olmayan değerler bu seçimden etkilenmez ve en yakın temsil edilebilir değere yuvarlanir. |
| ToZero | 2 | Yalnızca orta noktalar değil her değerin sıfıra doğru yuvarlandığı, sıfıra doğru yönlendirilmiş yuvarlama stratejisi. Sonuç, en yakın değerdir ve sonsuz kesin sonuçtan daha büyük değildir. Sıfır basamağı yuvarlarken, bu kesmeye eşdeğerdir; sıfır olmayan basamak sayısına yuvarlarken, belirtilen duyarlıkta sıfıra doğru kesilir. |
| ToNegativeInfinity | 3 | Yalnızca orta noktalar değil her değerin negatif sonsuzluğa doğru yuvarlandığı aşağı yönlü yuvarlama stratejisi. Sonuç, en yakın değerdir ve sonsuz kesin sonuçtan büyük değildir. Sıfır basamağı yuvarlarken, bu matematiksel taban işlevine eşdeğerdir; sıfır olmayan basamak sayısına yuvarlarken, belirtilen duyarlıkta aynı davranışı uygular. |
| ToPositiveInfinity | 4 | Yukarı yönlü yuvarlama stratejisi, her değerin (yalnızca orta noktaların değil) pozitif sonsuzluğa doğru yuvarlandığı bir stratejidir. Sonuç, sonsuz kesin sonuca en yakın değerdir ve bundan küçük değildir. Sıfır basamağı yuvarlarken, bu matematiksel tavan işlevine eşdeğerdir; sıfır olmayan basamak sayısına yuvarlarken, belirtilen duyarlıkta aynı davranışı uygular. |
Ö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.
Numaralandırmanın adına rağmen, her mod yalnızca orta noktaların nasıl işlenme şekliyle ilgili değildir. MidpointRounding en yakın ve yönlendirilmiş yuvarlama olmak üzere iki genel yuvarlama stratejisi tanımlar ve her numaralandırma alanı tam olarak şu stratejilerden birine katılır:
- En yakına yuvarlama modları (AwayFromZero ve ToEven) her zaman en yakın temsil edilebilir değere yuvarlar. Bunlar yalnızca giriş iki değer ( orta nokta) arasında tam olarak yarıya indiğinde birbirinden farklıdır. Bu, numaralandırma adının başvurduğu değerdir.
- Yönlendirilmiş yuvarlama modları (ToNegativeInfinity, ToPositiveInfinityve ToZero) her zaman her değeri (yalnızca orta noktaları değil) sabit bir yönde yuvarlar. Sonuç, giriş bir orta nokta olmasa bile bu yöndeki en yakın temsil edilebilir değerdir.
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'dan 4'e veya 6'dan 9'a kadarsa, ve AwayFromZero arasındaki ToEven seçim 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. Yönlendirilmiş modlar MidpointRounding , her değerin yuvarlandığı yönü denetler. En yakına yuvarlama modlarından farklı olarak, bu modlar yalnızca orta noktalara değil her giriş değerine uygulanır; örneğin, ToPositiveInfinity 2,1, 2,5 ve 2,8'i 3'e yuvarlar.
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 |