Tabella delle conversioni numeriche esplicite (Riferimenti per C#)

La conversione numerica esplicita è utilizzata per convertire qualsiasi tipo numerico in qualsiasi altro tipo numerico, per il quale non esiste alcuna conversione implicita, utilizzando un'espressione cast. Tali conversioni sono illustrate nella tabella che segue.

Da

Per

sbyte

byte, ushort, uint, ulong oppure char

byte

Sbyte oppure char

short

sbyte, byte, ushort, uint, ulong o char

ushort

sbyte, byte, short o char

int

sbyte, byte, short, ushort, uint, ulong, o char

uint

sbyte,byte, short, ushort, int o char

long

sbyte, byte, short, ushort, int, uint, ulong o char

ulong

sbyte, byte, short, ushort, int, uint, long o char

char

sbyte, byte o short

float

sbyte, byte, short, ushort, int, uint, long, ulong, char, o decimal

double

sbyte, byte, short, ushort, int, uint, long, ulong, char, float, o decimal

decimal

sbyte, byte, short, ushort, int, uint, long, ulong, char, float o double

Note

  • La conversione numerica esplicita può causare una perdita nella precisione o comportare la generazione di eccezioni.

  • Quando si esegue una conversione da un valore decimal in un tipo integrale, il valore viene arrotondato al più vicino valore integrale in direzione dello zero. Se il valore integrale risultante non è incluso nell'intervallo del tipo di destinazione, verrà generata un'eccezione OverflowException.

  • Quando si esegue una conversione da un valore double o float in un tipo integrale, il valore viene troncato. Se il valore integrale restituito è esterno all'intervallo del valore di destinazione, il risultato dipende dal contesto di controllo dell'overflow. In un contesto checked viene generata un'eccezione OverflowException, mentre in un contesto unckecked il risultato è un valore non specificato del tipo di destinazione.

  • Per una conversione da double in float, il valore double viene arrotondato al valore float più vicino. Se il valore double è troppo piccolo o troppo grande per essere contenuto nel tipo di destinazione, il risultato sarà zero o infinito.

  • Per una conversione da float o double in decimal, il valore di origine viene convertito nella rappresentazione decimal e arrotondato al numero più vicino successivo alla ventottesima cifra decimale, se necessario. A seconda dell'entità del valore di origine, è possibile che si verifichi uno dei seguenti risultati:

    • Se il valore di origine è troppo piccolo per essere rappresentato come decimal, il risultato sarà zero.

    • Se il valore di origine è NaN (non numerico), infinito o troppo grande per essere rappresentato come decimal, verrà generata un'eccezione OverflowException.

  • Per una conversione da decimal in float o double, il valore decimal viene arrotondato al valore double o float più vicino.

Per ulteriori informazioni sulla conversione esplicita, vedere Explicit nella Specifica del linguaggio C#. Per ulteriori informazioni su come accedere alla specifica, vedere Specifiche del linguaggio C#.

Vedere anche

Riferimenti

Cast e conversioni di tipi (Guida per programmatori C#)

Operatore () (Riferimenti per C#)

Tabella dei tipi integrali (Riferimenti per C#)

Tabella dei tipi incorporati (Riferimenti per C#)

Tabella delle conversioni numeriche implicite (Riferimenti per C#)

Concetti

Guida per programmatori C#

Altre risorse

Riferimenti per C#