.NET Core - Numeri
.NET Core supporta l'integrale numerico standard e le primitive a virgola mobile. Supporta anche i seguenti tipi:
System.Numerics.BigInteger che è un tipo integrale senza limite superiore o inferiore.
System.Numerics.Complex è un tipo che rappresenta numeri complessi.
Un set di tipi di vettore abilitati SIMD (Single Instruction Multiple Data) nello spazio dei nomi System.Numerics.
Tipi integrali
.NET Core supporta interi con e senza segno di intervalli diversi da un byte a otto byte di lunghezza. Tutti i numeri interi sono tipi di valore.
La tabella seguente rappresenta i tipi integrali e la loro dimensione;
genere | Firmato / Non firmato | Dimensioni (byte) | Valore minimo | Valore massimo |
---|---|---|---|---|
Byte | Non firmato | 1 | 0 | 255 |
Int16 | Firmato | 2 | −32.768 | 32.767 |
Int32 | Firmato | 4 | −2.147.483.648 | 2.147.483.647 |
Int64 | Firmato | 8 | −9.223.372.036.854.775.808 | 9.223.372.036.854.775.807 |
SByte | Firmato | 1 | -128 | 127 |
UInt16 | Non firmato | 2 | 0 | 65.535 |
UInt32 | Non firmato | 4 | 0 | 4.294.967.295 |
UInt64 | Non firmato | 8 | 0 | 18.446.744.073.709.551.615 |
Ogni tipo integrale supporta un set standard di operatori aritmetici, di confronto, uguaglianza, conversione esplicita e conversione implicita.
È inoltre possibile lavorare con i singoli bit in un valore intero utilizzando la classe System.BitConverter.
Tipi in virgola mobile
.NET Core include tre tipi primitivi a virgola mobile, illustrati nella tabella seguente.
genere | Dimensioni (byte) | Valore minimo | Valore massimo |
---|---|---|---|
Doppio | 8 | −1,79769313486232e308 | 1.79769313486232e308 |
Single | 4 | −3.402823e38 | 3.402823e38 |
Decimale | 16 | −79.228.162.514.264.337.593,5 43.950.335 | 79.228.162.514.264.337.593.543,9 50.335 |
Ogni tipo a virgola mobile supporta un set standard di operatori aritmetici, di confronto, di uguaglianza, di conversione esplicita e di conversione implicita.
È inoltre possibile lavorare con i singoli bit nei valori Double e Single utilizzando la classe BitConverter.
La struttura Decimal ha i propri metodi, Decimal.GetBits e Decimal.Decimal (Int32 ()), per lavorare con i singoli bit di un valore decimale, nonché il proprio set di metodi per eseguire alcune operazioni matematiche aggiuntive.
BigInteger
System.Numerics.BigInteger è un tipo immutabile che rappresenta un numero intero arbitrariamente grande il cui valore in teoria non ha limiti superiori o inferiori.
I metodi del tipo BigInteger sono strettamente paralleli a quelli degli altri tipi integrali.
Complesso
Il tipo System.Numerics.Complex rappresenta un numero complesso, ovvero un numero con una parte di numero reale e una parte di numero immaginario
Supporta un set standard di operatori aritmetici, di confronto, di uguaglianza, di conversione esplicita e di conversione implicita, nonché di metodi matematici, algebrici e trigonometrici.
SIMD
Lo spazio dei nomi Numerics include un set di tipi di vettore abilitati per SIMD per .NET Core.
SIMD consente di parallelizzare alcune operazioni a livello di hardware, il che si traduce in enormi miglioramenti delle prestazioni nelle app matematiche, scientifiche e grafiche che eseguono calcoli su vettori.
I tipi di vettore abilitati per SIMD in .NET Core includono quanto segue:
Tipi System.Numerics.Vector2, System.Numerics.Vector3 e System.Numerics.Vector4, che sono vettori a 2, 3 e 4 dimensioni di tipo Single.
La struttura Vector <T> che consente di creare un vettore di qualsiasi tipo numerico primitivo. I tipi numerici primitivi includono tutti i tipi numerici nello spazio dei nomi System ad eccezione di Decimal.
Due tipi di matrice, System.Numerics.Matrix3 × 2, che rappresenta una matrice 3 × 2; e System.Numerics.Matrix4 × 4, che rappresenta una matrice 4 × 4.
Il tipo System.Numerics.Plane, che rappresenta un piano tridimensionale, e il tipo System.Numerics.Quaternion, che rappresenta un vettore utilizzato per codificare rotazioni fisiche tridimensionali.