Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

BigInteger Explicit Conversione (BigInteger to Double)

 

Data di pubblicazione: ottobre 2016

Definisce una conversione esplicita di un BigInteger dell'oggetto a un Double valore.

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

public static explicit operator double (
	BigInteger value
)

Parametri

value
Type: System.Numerics.BigInteger

Il valore da convertire in un Double.

Valore restituito

Type: System.Double

Oggetto che contiene il valore di value parametro.

Gli overload di Explicit(Decimal to BigInteger) il metodo per definire i tipi a cui o da cui un BigInteger oggetto può essere convertito. I compilatori di linguaggio non eseguono automaticamente questa conversione perché può comportare la perdita di dati. Ma eseguono la conversione solo se un operatore di cast (in c#) o una funzione di conversione (ad esempio CType o CDbl in Visual Basic) viene utilizzato.

Poiché il BigInteger valore può essere compreso nell'intervallo del Double del tipo di dati, questa operazione è una conversione di restrizione. Se la conversione ha esito negativo, non viene generato un OverflowException. Al contrario, se il BigInteger valore è minore di Double.MinValue, risultante Double valore Double.NegativeInfinity. Se il BigInteger valore è maggiore di Double.MaxValue, risultante Double valore Double.PositiveInfinity.

La conversione di un BigInteger a un Double può comportare una perdita di precisione. In alcuni casi, la perdita di precisione può causare l'operazione di cast o conversione abbia esito positivo anche se il BigInteger valore è compreso nell'intervallo del Double tipo di dati. Nell'esempio seguente viene illustrato questo concetto. Assegna il valore massimo di un Double a due BigInteger variabili, incrementa una BigInteger variabile 9.999 e291 e verifica l'uguaglianza di due variabili. Come previsto, la chiamata al Equals(BigInteger) metodo mostra che non sono uguali. Tuttavia, la conversione della più ampia BigInteger valore su un Double ha esito positivo, anche se il BigInteger valore supera ora Double.MaxValue.

// Increase a BigInteger so it exceeds Double.MaxValue.
BigInteger number1 = (BigInteger) Double.MaxValue;
BigInteger number2 = number1;
number2 = number2 + (BigInteger) 9.999e291;
// Compare the BigInteger values for equality.
Console.WriteLine("BigIntegers equal: {0}", number2.Equals(number1));

// Convert the BigInteger to a Double.
double dbl = (double) number2;

// Display the two values.
Console.WriteLine("BigInteger: {0}", number2);
Console.WriteLine("Double:     {0}", dbl); 
// The example displays the following output:
//       BigIntegers equal: False
//       BigInteger: 1.7976931348623158081352742373E+308
//       Double:     1.79769313486232E+308      

Nell'esempio seguente viene illustrata la conversione di BigInteger a Double valori.

// BigInteger to Double conversion.
BigInteger goodDouble = (BigInteger) 102.43e22;
BigInteger badDouble = (BigInteger) Double.MaxValue;  
badDouble = badDouble * 2;

double doubleFromBigInteger;

// successful conversion using cast operator.
doubleFromBigInteger = (double) goodDouble;
Console.WriteLine(doubleFromBigInteger);

// Convert an out-of-bounds BigInteger value to a Double.
doubleFromBigInteger = (double) badDouble;
Console.WriteLine(doubleFromBigInteger);

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 4.0
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 4.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: