Bagikan melalui


Numerik dalam .NET

.NET menyediakan berbagai bilangan bulat numerik dan primitif floating-point, 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

Tipe 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 tidak ditandatangani

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

Nota

Jenis bilangan bulat yang tidak ditandatangani tidak sesuai dengan CLS. Untuk informasi selengkapnya, lihat Kemandirian bahasa dan komponen independen bahasa.

BigInteger

Struktur System.Numerics.BigInteger adalah jenis yang tidak dapat diubah yang mewakili bilangan bulat besar yang nilainya dalam teori tidak memiliki batas atas atau bawah. Metode jenis BigInteger sejajar dengan jenis integral lainnya.

Jenis titik mengambang

.NET mencakup jenis floating-point berikut:

Tipe Ukuran Halaman (dalam Byte) Perkiraan rentang Primitif? Catatan
System.Half 2 ±65504 Tidak. Diperkenalkan dalam .NET 5
System.Single 4 ±3,4 x 1038 Ya
System.Double 8 ±1,7 × 10308 Ya
System.Decimal 16 ±7,9228 x 1028 Tidak.

Jenis Half, Single, dan Double mendukung nilai khusus yang mewakili bukan angka dan tak terbatas. Misalnya, jenis Double menyediakan nilai-nilai berikut: Double.NaN, Double.NegativeInfinity, dan Double.PositiveInfinity. Anda menggunakan Double.IsNaNmetode , Double.IsInfinity, Double.IsPositiveInfinity, dan Double.IsNegativeInfinity untuk menguji nilai khusus ini.

Setiap jenis floating-point mendukung sekumpulan 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 di nilai Double, Single, dan Half dengan menggunakan kelas System.BitConverter. 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, menurut sifatnya, tidak tepat (misalnya, jarak antara dua bintang) dan untuk aplikasi di mana tingkat presisi tinggi dan kesalahan pembulatan kecil tidak diperlukan. Gunakan jenis System.Decimal untuk kasus di mana presisi yang lebih besar diperlukan dan kesalahan pembulatan harus diminimalkan.

Nota

Jenis Decimal tidak menghapus kebutuhan untuk pembulatan. Sebaliknya, ini meminimalkan kesalahan karena pembulatan.

Kompleks

Struktur System.Numerics.Complex mewakili bilangan kompleks, yaitu angka dengan bagian bilangan riil dan bagian angka imajiner. Ini mendukung serangkaian standar operator konversi aritmatika, perbandingan, kesetaraan, eksplisit dan implisit, serta metode matematika, aljabar, dan trigonometri.

Jenis dengan dukungan SIMD

Namespace System.Numerics mencakup rangkaian jenis tipe yang mendukung .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 mencakup yang berikut ini:

  • Jenis Vector2, Vector3, dan Vector4 , yang mewakili vektor dengan nilai 2, 3, dan 4 Single .

  • Dua jenis matriks, Matrix3x2, yang mewakili matriks 3x2, dan Matrix4x4, yang mewakili matriks 4x4.

  • Jenisnya Plane , yang mewakili bidang dalam ruang tiga dimensi.

  • Jenisnya Quaternion , yang mewakili vektor yang digunakan untuk mengodekan rotasi fisik tiga dimensi.

  • Jenis Vector<T> yang mewakili vektor dari jenis numerik tertentu dan menyediakan rangkaian operator luas yang memanfaatkan dukungan SIMD. Jumlah contoh Vector<T> tetap, tetapi nilainya Vector<T>.Count tergantung pada CPU komputer tempat kode dieksekusi.

    Nota

    Jenis Vector<T> ini disertakan dengan .NET Core dan .NET 5+, tetapi bukan .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 kompilator JIT. Untuk memanfaatkan instruksi SIMD, aplikasi 64-bit Anda harus dijalankan oleh runtime yang menggunakan kompilator RyuJIT, yang disertakan dalam .NET Core dan dalam .NET Framework 4.6 dan versi yang lebih baru. Ini menambahkan dukungan SIMD saat menargetkan prosesor 64-bit.

Untuk informasi selengkapnya, lihat Menggunakan jenis numerik yang dipercepat SIMD.

Lihat juga