MidpointRounding Enum
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menentukan strategi yang harus digunakan metode pembulatan matematika untuk membulatkan angka.
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
- Warisan
- Atribut
Bidang
| Nama | Nilai | Deskripsi |
|---|---|---|
| ToEven | 0 | Strategi pembulatan ke angka terdekat. Ketika angka setengah di antara dua lainnya, angka tersebut dibulatkan ke arah angka genap terdekat. Nilai non-titik tengah tidak terpengaruh oleh pilihan ini dan dibulatkan ke nilai terdekat yang dapat diwakili. Juga dikenal sebagai pembulatan bankir. |
| AwayFromZero | 1 | Strategi pembulatan ke angka terdekat. Ketika angka setengah antara dua lainnya, angka tersebut dibulatkan ke arah angka terdekat yang jauh dari nol. Nilai non-titik tengah tidak terpengaruh oleh pilihan ini dan dibulatkan ke nilai terdekat yang dapat diwakili. |
| ToZero | 2 | Strategi pembulatan yang diarahkan menuju nol, di mana setiap nilai—bukan hanya titik tengah—dibulatkan menuju nol. Hasilnya adalah nilai yang paling dekat dan tidak lebih besar dari hasil yang sangat tepat. Saat membulatkan ke nol digit, ini setara dengan pemotongan; saat membulatkan ke jumlah digit bukan nol, angka tersebut terpotong mendekati nol pada presisi yang ditentukan. |
| ToNegativeInfinity | 3 | Strategi pembulatan yang diarahkan ke bawah, di mana setiap nilai—bukan hanya titik tengah—dibulatkan ke arah tak terbatas negatif. Hasilnya adalah nilai yang paling dekat dan tidak lebih besar dari hasil yang sangat tepat. Saat membulatkan ke nol digit, ini setara dengan fungsi lantai matematika; saat membulatkan ke jumlah digit bukan nol, digit menerapkan perilaku yang sama pada presisi yang ditentukan. |
| ToPositiveInfinity | 4 | Strategi pembulatan yang diarahkan ke atas, di mana setiap nilai—bukan hanya titik tengah—dibulatkan ke arah tak terbatas positif. Hasilnya adalah nilai yang paling dekat dan tidak kurang dari hasil yang sangat tepat. Saat membulatkan ke nol digit, ini setara dengan fungsi langit-langit matematika; saat membulatkan ke jumlah digit bukan nol, digit menerapkan perilaku yang sama pada presisi yang ditentukan. |
Contoh
Contoh berikut menunjukkan Math.Round metode bersama dengan MidpointRounding enumerasi:
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)
'
Keterangan
Gunakan enumerasi MidpointRounding dengan overload yang sesuai dari Math.Round, MathF.Round, dan Decimal.Round untuk memberikan kontrol lebih besar atas proses pembulatan.
Terlepas dari nama enumerasi, tidak setiap mode hanya tentang bagaimana titik tengah ditangani. MidpointRounding mendefinisikan dua strategi pembulatan keseluruhan—round to nearest dan directed rounding—dan setiap bidang enumerasi berpartisipasi dalam salah satu strategi berikut:
- Mode round-to-nearest (AwayFromZero dan ToEven) selalu membulatkan ke nilai terdekat yang dapat diwakili. Mereka hanya berbeda satu sama lain ketika input tepat setengah antara dua nilai ( titik tengah), yang merupakan apa yang dimaksud dengan nama enumerasi.
- Mode pembulatan yang diarahkan (ToNegativeInfinity, ToPositiveInfinity, dan ToZero) selalu membulatkan setiap nilai—bukan hanya titik tengah—dalam arah tetap. Hasilnya adalah nilai terdekat yang dapat diwakili ke arah tersebut, bahkan ketika input bukan titik tengah.
Membulatkan ke terdekat
Fields:
Operasi round-to-nearest dimulai dengan angka asli dengan presisi yang sudah ditentukan atau implisit; kemudian memeriksa digit berikutnya pada tingkat presisi tersebut ditambah satu; dan menghasilkan angka terdekat dengan presisi yang sama seperti angka aslinya. Untuk angka positif, jika digit berikutnya adalah dari 0 hingga 4, angka terdekat adalah menuju tak terbatas negatif. Jika digit berikutnya adalah dari 6 hingga 9, angka terdekat adalah menuju tak terbatas positif. Untuk angka negatif, jika digit berikutnya adalah dari 0 hingga 4, angka terdekat adalah menuju tak terbatas positif. Jika digit berikutnya adalah dari 6 hingga 9, angka terdekat adalah menuju tak terbatas negatif.
Jika digit berikutnya adalah dari 0 hingga 4 atau 6 hingga 9, pilihan antara AwayFromZero dan ToEven tidak memengaruhi hasil operasi pembulatan. Namun, jika digit berikutnya adalah 5, yang merupakan titik tengah antara dua hasil yang mungkin, dan semua digit yang tersisa adalah nol atau tidak ada digit yang tersisa, angka terdekat ambigu. Dalam hal ini, mode pembulatan ke yang terdekat dalam MidpointRounding memungkinkan Anda menentukan apakah operasi pembulatan mengembalikan angka terdekat menjauhi nol atau angka genap terdekat.
Tabel berikut menunjukkan hasil pembulatan beberapa angka negatif dan positif menggunakan mode pembulatan ke nilai terdekat. Presisi yang digunakan untuk membulatkan angka adalah nol, yang berarti angka setelah titik desimal mempengaruhi operasi pembulatan. Misalnya, untuk angka -2,5, digit setelah titik desimal adalah 5. Karena digit tersebut adalah titik tengah, Anda dapat menggunakan MidpointRounding nilai untuk menentukan hasil pembulatan. Jika AwayFromZero ditentukan, -3 dikembalikan karena merupakan angka terdekat dari nol dengan presisi nol. Jika ToEven ditentukan, -2 dikembalikan karena merupakan angka genap terdekat dengan presisi nol.
| Nomor asli | 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 |
Pembulatan Terarah
Fields:
Operasi pembulatan terarah mengambil bilangan asal dengan presisi implisit atau ditentukan serta mengembalikan bilangan terdekat setelahnya dalam arah yang ditentukan dengan presisi yang sama dengan bilangan asal. Mode yang diarahkan pada MidpointRounding kontrol arah ke mana setiap nilai dibulatkan. Tidak seperti mode round-to-nearest, mode ini berlaku untuk setiap nilai input, bukan hanya titik tengah; misalnya, ToPositiveInfinity membulatkan 2,1, 2,5, dan 2,8 semuanya hingga 3.
Tabel berikut menunjukkan hasil pembulatan beberapa angka negatif dan positif bersama dengan mode pembulatan yang diarahkan. Presisi yang digunakan untuk membulatkan angka adalah nol, yang berarti angka sebelum titik desimal dipengaruhi oleh operasi pembulatan.
| Nomor asli | ToNegativeInfinity | 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 |