Bagikan melalui


Numerik di .NET

.NET menyediakan berbagai bilangan bulat numerik dan primitif titik mengambang, serta:

Jenis bilangan bulat

.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.

BigInteger

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.

Jenis titik mengambang

.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.

Kompleks

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.

Jenis yang diaktifkan SIMD

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.

Lihat juga