.NET Sayısal Değerleri
.NET, sayısal tamsayı ve kayan nokta temel öğelerinin yanı sıra şunlardan oluşan bir aralık sağlar:
- System.Half, yarım duyarlıklı kayan nokta sayısını temsil eder.
- System.Decimal, ondalık kayan noktalı sayıyı temsil eder.
- System.Numerics.BigInteger, teorik üst veya alt sınır içermeyen bir integral türüdür.
- System.Numerics.Complex, karmaşık sayıları temsil eder.
- Ad alanında System.Numerics SIMD özellikli türler kümesi.
Tam sayı türleri
.NET, aşağıdaki tablolarda listelenen hem imzalı hem de imzasız 8 bit, 16 bit, 32 bit, 64 bit ve 128 bit tamsayı türlerini destekler.
İmzalı tamsayı türleri
Tür | Boyut (bayt cinsinden) | Minimum değer | Maksimum değer |
---|---|---|---|
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 (32 bit işlemde) | 4 | -2,147,483,648 | 2,147,483,647 |
System.IntPtr (64 bit işlemde) | 8 | -9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 |
İmzasız tamsayı türleri
Tür | Boyut (bayt cinsinden) | Minimum değer | Maksimum değer |
---|---|---|---|
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 (32 bit işlemde) | 4 | 0 | 4,294,967,295 |
System.UIntPtr (64 bit işlemde) | 8 | 0 | 18,446,744,073,709,551,615 |
Her tamsayı türü standart aritmetik işleç kümesini destekler. sınıfı, System.Math daha geniş bir matematik işlevleri kümesi için yöntemler sağlar.
Sınıfını kullanarak System.BitConverter tek tek bitlerle bir tamsayı değerinde de çalışabilirsiniz.
Not
İmzasız tamsayı türleri CLS uyumlu değildir. Daha fazla bilgi için bkz . Dil bağımsızlığı ve dilden bağımsız bileşenler.
BigInteger
Yapı System.Numerics.BigInteger , teorideki değerin üst veya alt sınırları olmayan rastgele büyük bir tamsayıyı temsil eden sabit bir türdür. Türün BigInteger yöntemleri, diğer integral türlerinin yöntemlerine yakından paraleldir.
Kayan nokta türleri
.NET aşağıdaki kayan nokta türlerini içerir:
Tür | Boyut (bayt cinsinden) | Yaklaşık aralık | Ilkel? | Notlar |
---|---|---|---|---|
System.Half | 2 | ±65504 | Hayır | .NET 5'te kullanıma sunulmuştur |
System.Single | 4 | ±3.4 x 1038 | Yes | |
System.Double | 8 | ±1.7 × 10308 | Yes | |
System.Decimal | 16 | ±7.9228 x 1028 | Hayır |
Half, Singleve türleri, sayı olmayan ve Double sonsuzluğu temsil eden özel değerleri destekler. Örneğin, Double türü şu değerleri sağlar: Double.NaN, Double.NegativeInfinityve Double.PositiveInfinity. Bu özel değerleri test etmek için , Double.IsInfinity, Double.IsPositiveInfinityve Double.IsNegativeInfinity yöntemlerini kullanırsınızDouble.IsNaN.
Her kayan nokta türü bir dizi standart aritmetik işleci destekler. sınıfı, System.Math daha geniş bir matematik işlevleri kümesi için yöntemler sağlar. .NET Core 2.0 ve üzeri, türün System.MathF bağımsız değişkenlerini kabul eden yöntemler sağlayan sınıfını Single içerir.
Sınıfını kullanarak System.BitConverter , Singleve Half değerlerindeki Doubletek tek bitlerle de çalışabilirsiniz. Yapının System.Decimal , Decimal.GetBits ondalık değerin ayrı bitleriyle çalışmak için kendi yöntemleri ve Decimal(Int32[])bazı ek matematik işlemleri gerçekleştirmek için kendi yöntemleri vardır.
Double, Singleve Half türleri, doğası gereği kesin olmayan değerler (örneğin, iki yıldız arasındaki mesafe) ve yüksek düzeyde duyarlık ve küçük yuvarlama hatası gerektirmeyen uygulamalar için kullanılmak üzere tasarlanmıştır. Daha fazla duyarlık System.Decimal gerektiren ve yuvarlama hatalarının en aza indirilmesi gereken durumlar için türünü kullanın.
Not
Türü Decimal yuvarlama gereksinimini ortadan kaldırmaz. Bunun yerine yuvarlama nedeniyle hataları en aza indirir.
Complex
Yapı System.Numerics.Complex karmaşık bir sayıyı, yani gerçek sayı bölümü ve hayali sayı bölümü olan bir sayıyı temsil eder. Standart bir aritmetik, karşılaştırma, eşitlik, açık ve örtük dönüştürme işleçlerinin yanı sıra matematiksel, cebirsel ve trigonometrik yöntemleri destekler.
SIMD özellikli türler
Ad System.Numerics alanı bir .NET SIMD özellikli türler kümesi içerir. SIMD (Tek Yönerge Birden Çok Veri) işlemi donanım düzeyinde paralelleştirilebilir. Bu, matematiksel, bilimsel ve grafik uygulamalarında yaygın olarak kullanılan vektörleştirilmiş hesaplamaların aktarım hızını artırır.
.NET SIMD özellikli türler şunları içerir:
Vector22, 3 ve Vector4 4 Single değerleriyle vektörleri temsil eden , Vector3ve türleri.
3x2 matrisi temsil eden ve Matrix4x44x4 matrisi temsil eden iki matris türüMatrix3x2.
Üç Plane boyutlu uzayda bir düzlemi temsil eden tür.
Türü Quaternion , üç boyutlu fiziksel döndürmeleri kodlamak için kullanılan bir vektör temsil eder.
Vector<T> Belirtilen sayısal türde bir vektöri temsil eden ve SIMD desteğinden yararlanan geniş bir işleç kümesi sağlayan tür. Bir Vector<T> örneğin sayısı sabittir, ancak değeri Vector<T>.Count kodun yürütüldiği makinenin CPU'sunun değerine bağlıdır.
Not
Türü Vector<T> .NET Core ve .NET 5+ ile birlikte sağlanır, ancak .NET Framework'e eklenmez. .NET Framework kullanıyorsanız, bu türe erişmek için System.Numerics.Vectors NuGet paketini yükleyin.
SIMD özellikli türler, SIMD etkin olmayan donanımlarla veya JIT derleyicileriyle kullanılabilecek şekilde uygulanır. SIMD yönergelerinden yararlanmak için, 64 bit uygulamalarınız .NET Core ve .NET Framework 4.6 ve sonraki sürümlerinde bulunan RyuJIT derleyicisini kullanan çalışma zamanı tarafından çalıştırılmalıdır. 64 bit işlemcileri hedeflerken SIMD desteği ekler.
Daha fazla bilgi için bkz . SIMD hızlandırılmış sayısal türleri kullanma.