Main Content

double

Array a doppia precisione

Descrizione

double è il tipo di dati numerici (classe) predefinito in MATLAB® che fornisce una precisione sufficiente per la maggior parte delle attività di calcolo. Le variabili numeriche sono memorizzate automaticamente come valori in virgola mobile a doppia precisione a 64 bit (8 byte). Ad esempio:

x = 10;
whos x
  Name      Size            Bytes  Class     Attributes

  x         1x1                 8  double  

MATLAB costruisce il tipo di dati double secondo lo standard IEEE® 754 per la doppia precisione. L’intervallo per un numero negativo di tipo double è compreso tra -1,79769 x 10308 e -2,22507 x 10-308, mentre quello per i numeri positivi è compreso tra 2,22507 x 10-308 e 1,79769 x 10308.

Per maggiori informazioni sui valori in virgola mobile a doppia precisione e a precisione singola, vedere Floating-Point Numbers.

Creazione

Quando si attribuisce uno scalare numerico o un array a una variabile, come A = [1 2 3; 4 5 6], si crea automaticamente un array a doppia precisione. La variabile A è di tipo double. Per maggiori informazioni sulla creazione e sulla combinazione di array, vedere Creating, Concatenating, and Expanding Matrices. Inoltre, le operazioni su variabili a doppia precisione e su funzioni con input a doppia precisione restituiscono usualmente valori a doppia precisione, come + o sin.

Se si dispone di un array di un tipo di dati diverso, come single o int8, è possibile convertire tale array in un array a doppia precisione utilizzando la funzione double, che memorizza l'array con una precisione maggiore per ulteriori calcoli.

Descrizione

esempio

Y = double(X) converte i valori in X in valori a doppia precisione.

Argomenti di input

espandi tutto

Array di input, specificato come scalare, vettore, matrice o array multidimensionale.

Tipi di dati: single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string

Esempi

comprimi tutto

Per impostazione predefinita, i numeri in MATLAB sono di tipo double. È possibile utilizzare la funzione class per verificare il tipo di una variabile.

x = 100;
xtype = class(x)
xtype = 
'double'

Utilizzare la funzione double per convertire le variabili non a doppia precisione nel tipo double.

y = true
y = logical
   1

ydouble = double(y);
ynewtype = class(ydouble)
ynewtype = 
'double'

Confrontare gli intervalli di valori numerici a doppia precisione con gli intervalli di quelli a precisione singola.

Utilizzare le funzioni realmin e realmax per visualizzare i valori positivi minimi e massimi che possono essere rappresentati a doppia precisione.

doublemin = realmin('double')
doublemin = 2.2251e-308
doublemax = realmax('double')
doublemax = 1.7977e+308

Ora visualizzare i valori positivi minimi e massimi che possono essere rappresentati a precisione singola. L'intervallo di valori è minore rispetto alla doppia precisione e richiede meno memoria.

singlemin = realmin('single')
singlemin = single
    1.1755e-38
singlemax = realmax('single')
singlemax = single
    3.4028e+38

La funzione eps restituisce una misura di quanto i numeri possano essere vicini a doppia precisione rispetto alla precisione singola. Visualizzare la distanza tra il numero 1,0 e il numero successivo più grande a doppia precisione.

doubleeps = eps('double')
doubleeps = 2.2204e-16

Ora visualizzare la distanza tra il numero 1,0 e il numero successivo più grande a precisione singola. I valori a doppia precisione sono più vicini tra loro poiché è possibile rappresentarne una quantità maggiore.

singleeps = eps('single')
singleeps = single
    1.1921e-07

Suggerimenti

  • Quando si crea una classe, sovraccaricare double quando risulta opportuno convertire un oggetto di quella classe in un valore a doppia precisione.

  • La conversione di un array di char in un array di tipo numerico genera un array dei corrispondenti valori di codice Unicode®. Il testo nelle stringhe non viene convertito in questo modo. La conversione di una stringa che non rappresenta un singolo valore numerico in double genera un risultato NaN. Per maggiori informazioni, vedere Unicode and ASCII Values.

Funzionalità estese

Generazione di codice GPU
Genera codice CUDA® per GPU NVIDIA® con GPU Coder™.

Cronologia versioni

Introduzione prima di R2006a