Numerik di .NET
.NET menyediakan berbagai bilangan bulat numerik dan primitif titik mengambang, serta:
- System.Half, yang mewakili angka floating-point half-precision.
- System.Decimal, yang mewakili angka floating-point desimal.
- System.Numerics.BigInteger, yang merupakan jenis integral tanpa batas atas atau bawah teoritis.
- System.Numerics.Complex, yang mewakili bilangan kompleks.
- Sekumpulan jenis berkemampuan SIMD di System.Numerics namespace layanan.
.NET mendukung jenis bilangan bulat 8-bit, 16-bit, 32-bit, 64-bit, dan 128-bit yang ditandatangani dan tidak ditandatangani, yang tercantum dalam tabel berikut.
Jenis bilangan bulat yang ditandatangani
Jenis | Ukuran Halaman (dalam Byte) | Nilai minimum | Nilai maksimum |
---|---|---|---|
System.Int16 | 2 | -32,768 | 32.767 |
System.Int32 | 4 | -2,147,483,648 | 2,147,483,647 |
System.Int64 | 8 | -9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 |
System.Int128 | 16 | −170.141.183.460.469.231.731.687.303.715.884.105.728 | 170,141,183,460,469,231,731,687,303,715,884,105,727 |
System.SByte | 1 | -128 | 127 |
System.IntPtr (dalam proses 32-bit) | 4 | -2,147,483,648 | 2,147,483,647 |
System.IntPtr (dalam proses 64-bit) | 8 | -9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 |
Jenis bilangan bulat yang ditandatangani
Jenis | Ukuran Halaman (dalam Byte) | Nilai minimum | Nilai maksimum |
---|---|---|---|
System.Byte | 1 | 0 | 255 |
System.UInt16 | 2 | 0 | 65.535 |
System.UInt32 | 4 | 0 | 4,294,967,295 |
System.UInt64 | 8 | 0 | 18,446,744,073,709,551,615 |
System.UInt128 | 16 | 0 | 340,282,366,920,938,463,463,374,607,431,768,211,455 |
System.UIntPtr (dalam proses 32-bit) | 4 | 0 | 4,294,967,295 |
System.UIntPtr (dalam proses 64-bit) | 8 | 0 | 18,446,744,073,709,551,615 |
Setiap jenis bilangan bulat mendukung serangkaian operator aritmatika standar. Kelas ini System.Math menyediakan metode untuk serangkaian fungsi matematika yang lebih luas.
Anda juga dapat bekerja dengan bit individual dalam nilai bilangan bulat dengan menggunakan System.BitConverter kelas.
Catatan
Jenis bilangan bulat yang tidak ditandatangani tidak sesuai dengan CLS. Untuk informasi selengkapnya tentang CLS, lihat Independensi bahasa dan komponen yang tidak bergantung pada bahasa.
Struktur System.Numerics.BigInteger adalah jenis yang tidak dapat diubah yang mewakili bilangan bulat besar yang arbitrer yang nilainya dalam teori tidak memiliki batas atas atau bawah. Metode jenis BigInteger secara paralel dengan jenis integral lainnya.
.NET menyertakan jenis floating-point berikut:
Jenis | Ukuran Halaman (dalam Byte) | Rentang perkiraan | Primitif? | Catatan |
---|---|---|---|---|
System.Half | 2 | ±65504 | No | Diperkenalkan di .NET 5 |
System.Single | 4 | ±3,4 x 1038 | Ya | |
System.Double | 8 | ±1.7 × 10308 | Ya | |
System.Decimal | 16 | ±7,9228 x 1028 | No |
Jenis Half, Single, dan Double mendukung nilai khusus yang mewakili bukan angka dan tak terbatas. Misalnya, Double jenis menyediakan konstanta berikut: Double.NaN, Double.NegativeInfinity, dan Double.PositiveInfinity. Anda menggunakan Double.IsNaN metode, Double.IsInfinity, Double.IsPositiveInfinity, dan Double.IsNegativeInfinity untuk menguji nilai khusus ini.
Setiap jenis bilangan bulat mendukung serangkaian operator aritmatika standar. Kelas ini System.Math menyediakan metode untuk serangkaian fungsi matematika yang lebih luas. .NET Core 2.0 dan yang lebih baru mencakup System.MathF kelas , yang menyediakan metode yang menerima argumen jenis Single .
Anda juga dapat bekerja dengan bit individual dalam Double, Single, dan Half nilai dengan menggunakan System.BitConverter kelas. Struktur System.Decimal ini memiliki metodenya sendiri, Decimal.GetBits dan Decimal(Int32[]), untuk bekerja dengan bit individual nilai desimal, serta serangkaian metodenya sendiri untuk melakukan beberapa operasi matematika tambahan.
Jenis Double, Single, dan Half dimaksudkan untuk digunakan untuk nilai yang, berdasarkan sifatnya, tidak tepat (misalnya, jarak antara dua bintang) dan untuk aplikasi di mana tingkat presisi tinggi dan kesalahan pembulatan kecil tidak diperlukan. Gunakan System.Decimal jenis untuk kasus di mana presisi yang lebih besar diperlukan dan kesalahan pembulatan harus diminimalkan.
Catatan
Jenisnya Decimal tidak menghilangkan kebutuhan untuk pembulatan. Sebaliknya, ini meminimalkan kesalahan karena pembulatan.
Struktur System.Numerics.Complex mewakili bilangan kompleks, yaitu angka dengan bagian angka riil dan bagian angka imajiner. Ini mendukung seperangkat standar aritmatika, perbandingan, kesetaraan, operator konversi eksplisit dan implisit, serta metode matematika, aljabar, dan trigonometri.
Namespace layanan System.Numerics menyertakan sekumpulan jenis berkemampuan .NET SIMD. Operasi SIMD (Single Instruction Multiple Data) dapat diparalelkan pada tingkat perangkat keras. Itu meningkatkan throughput komputasi vektorisasi, yang umum dalam aplikasi matematika, ilmiah, dan grafis.
Jenis yang diaktifkan .NET SIMD meliputi yang berikut ini:
Jenis Vector2, Vector3, dan Vector4, yang mewakili vektor dengan nilai Single 2, 3, dan 4.
Dua jenis matriks, Matrix3x2, yang mewakili matriks 3x2, dan Matrix4x4, yang mewakili matriks 4x4.
Jenis Plane, yang mewakili bidang dalam ruang tiga dimensi.
JenisQuaternion, yang mewakili vektor yang digunakan untuk mengodekan rotasi fisik tiga dimensi.
Jenis, Vector<T> yang mewakili vektor dari jenis numerik tertentu dan menyediakan serangkaian operator yang luas yang mendapat manfaat dari dukungan SIMD. Jumlah Vector<T> instans diperbaiki, tetapi nilainya Vector<T>.Count tergantung pada CPU komputer, di mana kode dijalankan.
Catatan
Jenis Vector<T> ini disertakan dengan .NET Core dan .NET 5+, tetapi tidak .NET Framework. Jika Anda menggunakan .NET Framework, instal paket NuGet System.Numerics.Vectors untuk mendapatkan akses ke jenis ini.
Jenis berkemampuan SIMD diimplementasikan sedih sehingga dapat digunakan dengan perangkat keras yang tidak mendukung SIMD atau pengkompilasi JIT. Untuk memanfaatkan instruksi SIMD, aplikasi 64-bit Anda harus dijalankan oleh runtime yang menggunakan kompiler RyuJIT, yang disertakan dalam .NET Core dan dalam .NET Framework 4.6 dan versi yang lebih baru. Itu menambahkan dukungan SIMD ketika menargetkan prosesor 64-bit.
Untuk informasi selengkapnya, lihat Menggunakan tipe numerik yang dipercepat SIMD.
Umpan balik .NET
.NET adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik: