Esporta (0) Stampa
Espandi tutto

Struttura Decimal

Rappresenta un numero decimale.

Spazio dei nomi: System
Assembly: mscorlib (in mscorlib.dll)

[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public struct Decimal : IFormattable, IComparable, IConvertible, 
	IComparable<decimal>, IEquatable<decimal>
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public final class Decimal extends ValueType implements IFormattable, IComparable, 
	IConvertible, IComparable<Decimal>, IEquatable<Decimal>
JScript supporta l'utilizzo di strutture ma non la dichiarazione di nuove.

Il tipo di valore Decimal rappresenta numeri decimali compresi tra i valori positivi 79,228,162,514,264,337,593,543,950,335 e i valori negativi 79,228,162,514,264,337,593,543,950,335. Il tipo di valore Decimal è appropriato per i calcoli finanziari che richiedono grandi numeri di cifre integrali e frazionarie significative e nessun errore di arrotondamento.

Un numero decimale è un valore in virgola mobile costituito da un segno, un valore numerico dove ogni cifra nel valore è compresa tra 0 e 9 e un fattore di scala indicante la posizione di una virgola decimale mobile, che separa le parti intere da quelle frazionarie del valore numerico.

La rappresentazione binaria di un valore Decimal consiste di un segno di 1 bit, un numero integer a 96 bit e un fattore di scala utilizzato per dividere il numero integer a 96 bit e specificare quale parte sia una frazione decimale. Il fattore di scala è costituito implicitamente dal numero 10, elevato a un esponente compreso tra 0 e 28, di conseguenza, la rappresentazione binaria di un valore Decimal corrisponde al form, ((-296 a 296) / 10(0 a 28)), dove -296-1 è uguale a MinValue e 296-1 è uguale a MaxValue.

Il fattore di scala conserva anche tutti gli zero finali di un numero Decimal. Gli zero finali non influenzano il valore di un numero Decimal in operazioni aritmetiche o di confronto. Tuttavia, gli zero finali possono essere rivelati dal metodo ToString se viene applicato un formato di stringa appropriato.

Considerazioni sulla conversione

Il presente tipo fornisce metodi per convertire valori Decimal nel e dal tipo Char, SByte, Int16, Int32, Int64, Byte, UInt16, UInt32 e UInt64. Le conversioni da altri tipi in Decimal sono conversioni di ampliamento, che non perdono dati né generano eccezioni.

Le conversioni da Decimal in altri tipi sono conversioni di restrizione che arrotondano il valore Decimal al valore integer più vicino che tende allo zero. Se non è possibile rappresentare il risultato della conversione nel tipo di destinazione, verrà generata una OverflowException.

Questo tipo fornisce metodi per convertire valori Decimal nel e dal tipo Single e Double. Le conversioni da Decimal a Single o Double sono conversioni di restrizione che potrebbero perdere precisione ma non le informazioni relative alla grandezza del valore convertito. La conversione non genererà un'eccezione.

Le conversioni da Single o Double a Decimal genereranno una OverflowException se non è possibile rappresentare il risultato della conversione come Decimal.

Interfacce implementate

Questo tipo implementa le interfacce IComparable, IComparable, IFormattable e IConvertible. Utilizzare la classe Convert per le conversioni anziché l'implementazione del membro esplicito dell'interfaccia IConvertible di questo tipo.

Nell'esempio di codice riportato di seguito viene illustrato l'utilizzo di Decimal.

/// <summary>
/// Keeping my fortune in Decimals to avoid the round-off errors.
/// </summary>
class PiggyBank {
    protected decimal MyFortune;

    public void AddPenny() {
        MyFortune = Decimal.Add(MyFortune, .01m);
    }

    public decimal Capacity {
        get {
            return Decimal.MaxValue;
        }
    }

    public decimal Dollars {
        get {
            return Decimal.Floor(MyFortune);
        }
    }

    public decimal Cents {
        get {
            return Decimal.Subtract(MyFortune, Decimal.Floor(MyFortune));
        }
    }

    public override string ToString() {
        return MyFortune.ToString("C")+" in piggy bank";
    }
}

/// <summary>
/// Keeping my fortune in Decimals to avoid the round-off errors.
/// </summary>
class PiggyBank
{
    protected System.Decimal myFortune;

    public void AddPenny()
    {
        myFortune = Decimal.Add(myFortune, System.Convert.ToDecimal(0.01));
    } //AddPenny

    /** @property 
     */
    public System.Decimal get_Capacity()
    {
        return Decimal.MaxValue;
    } //get_Capacity

    /** @property 
     */
    public System.Decimal get_Dollars()
    {
        return Decimal.Floor(myFortune);
    } //get_Dollars

    /** @property 
     */
    public System.Decimal get_Cents()
    {
        return Decimal.Subtract(myFortune, Decimal.Floor(myFortune));
    } //get_Cents

    public String ToString()
    {
        return myFortune.ToString("C") + " in piggy bank";
    } //ToString
} //PiggyBank

/// <summary>
/// Keeping my fortune in Decimals to avoid the round-off errors.
/// </summary>
class PiggyBank {
    protected var MyFortune : Decimal;

    public function AddPenny() {
        MyFortune = Decimal.Add(MyFortune, 0.01);
    }

    public function get Capacity() : Decimal {
            return Decimal.MaxValue;
    }

    public function get Dollars() : Decimal {
        return Decimal.Floor(MyFortune);
    }

    public function get Cents() : Decimal {
        return Decimal.Subtract(MyFortune, Decimal.Floor(MyFortune));
    }

    public function ToString() : String {
        return MyFortune.ToString("C")+" in piggy bank";
    }
}

I membri statici pubblici (Shared in Visual Basic) di questo tipo sono validi per le operazioni multithreading. I membri di istanza non sono garantiti come thread safe.

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile per Pocket PC, Windows Mobile per Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema.

.NET Framework

Supportato in: 2.0 1.1 1.0

.NET Compact Framework

Supportato in: 2.0 1.0

Aggiunte alla community

AGGIUNGI
Mostra:
© 2014 Microsoft