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