formatSpec può essere un vettore di caratteri tra virgolette singole o uno scalare di stringa.
Operatore di formattazione
Un operatore di formattazione inizia con un segno di percentuale % e termina con un carattere di conversione. Il carattere di conversione è necessario. Opzionalmente, è possibile specificare operatori di identificazione, flag, larghezza del campo, precisione e sottotipo tra % e il carattere di conversione. (Gli spazi non sono validi tra gli operatori e sono qui mostrati solo per motivi di leggibilità).
Carattere di conversione
Questa tabella mostra i caratteri di conversione per formattare i dati numerici e di caratteri come testo.
| Tipo di valore | Conversione | Dettagli |
|---|
Intero, con segno | %d o %i
| Base 10 |
Intero, senza segno | %u
| Base 10 |
%o
| Base 8 (ottale) |
%x
| Base 16 (esadecimale), lettere minuscole a–f |
%X
| Come %x, lettere maiuscole A–F |
Numero in virgola mobile | %f
| Notazione in virgola fissa (utilizzare un operatore di precisione per specificare il numero di cifre dopo il punto decimale). |
%e
| Notazione esponenziale, ad esempio 3.141593e+00 (utilizzare un operatore di precisione per specificare il numero di cifre dopo il punto decimale). |
%E
| Come %e, ma in lettere maiuscole, ad esempio 3.141593E+00 (utilizzare un operatore di precisione per specificare il numero di cifre dopo il punto decimale). |
%g
| Il più compatto tra %e e %f, senza zeri finali (utilizzare un operatore di precisione per specificare il numero di cifre significative). |
%G
| Il più compatto tra %E e %f, senza zeri finali (utilizzare un operatore di precisione per specificare il numero di cifre significative). |
Caratteri o stringhe | %c
| Carattere singolo |
%s
| Vettore di caratteri o array di stringhe. Il tipo di testo di output è uguale al tipo di formatSpec. |
Operatori opzionali
Gli operatori opzionali di identificazione, flag, larghezza del campo, precisione e sottotipo definiscono ulteriormente il formato del testo di output.
Identificatore
Ordine di elaborazione degli argomenti di input della funzione. Utilizzare la sintassi n$, dove n rappresenta le posizioni degli altri argomenti di input nella chiamata di funzione.
Esempio: ('%3$s %2$s %1$s %2$s','A','B','C') stampa gli argomenti di input 'A', 'B', 'C' come segue: C B A B.
Nota: se un argomento di input è un array, non è possibile utilizzare gli identificatori per specificare particolari elementi dell'array da quell'argomento di input.
Flag
'–'
| Allinea a sinistra.
Esempio: %-5.2f
Esempio: %-10s |
'+'
| Stampa sempre un carattere segno (+ o -) per qualsiasi valore numerico.
Esempio: %+5.2f
Allinea testo a destra.
Esempio: %+10s |
' '
| Inserisce uno spazio prima del valore.
Esempio: % 5.2f |
'0'
| Riempie la larghezza del campo con zeri prima del valore.
Esempio: %05.2f |
'#'
| Modifica le conversioni numeriche selezionate: Per %o, %x o %X, stampa il prefisso 0, 0x o 0X. Per %f, %e o %E, stampa il punto decimale anche quando la precisione è 0. Per %g o %G, non rimuove gli zeri finali o il punto decimale.
Esempio: %#5.0f |
Larghezza del campo
Numero minimo di caratteri da stampare. L'operatore di larghezza del campo può essere un numero o un asterisco (*) per riferirsi a un argomento di input.
Quando si specifica * come operatore di larghezza del campo, gli altri argomenti di input devono fornire sia una larghezza che un valore da stampare. Le larghezze e i valori possono essere coppie di argomenti o coppie all'interno di un array numerico. Con * come operatore di larghezza del campo, è possibile stampare valori diversi con larghezze diverse.
Esempio: gli argomenti di input ('%12d',intmax) sono equivalenti a ('%*d',12,intmax).
Esempio: gli argomenti di input ('%*d',[2 10 5 100]) restituiscono '10 100', con due spazi allocati per 10 e cinque spazi allocati per 100. Come alternativa, è possibile specificare le larghezze e i valori dei campi come argomenti multipli, come in ('%*d',2,10,5,100).
La funzione riempie la larghezza del campo con spazi prima del valore, a meno che non sia specificato diversamente dai flag.
Precisione
Per %f, %e o %E | Numero di cifre a destra del punto decimale
Esempio: '%.4f' stampa pi come '3.1416' |
Per %g o %G | Numero di cifre significative
Esempio: '%.4g' stampa pi come '3.142' |
L'operatore di precisione può essere un numero o un asterisco (*) per riferirsi a un argomento.
Quando si specifica * come operatore di precisione del campo, gli altri argomenti di input devono fornire sia una precisione che un valore da stampare. Le precisioni e i valori possono essere coppie di argomenti o coppie all'interno di un array numerico. Con * come operatore di precisione, è possibile stampare valori diversi con precisioni diverse.
Quando si specificano *.* come operatori di larghezza e di precisione del campo, è necessario specificare le larghezze, le precisioni e i valori del campo come terzine.
Esempio: gli argomenti di input ('%.4f',pi) sono equivalenti a ('%.*f',4,pi).
Esempio: gli argomenti di input ('%6.4f',pi) sono equivalenti a ('%*.*f',6,4,pi).
Esempio: gli argomenti di input ('%*.*f',6,4,pi,9,6,exp(1)) restituiscono '3.1416 2.718282', con 9 e 6 come larghezza del campo e precisione per l'output di exp(1).
Nota
Se si specifica un operatore di precisione per i valori in virgola mobile che supera la precisione del tipo di dati numerici di input, i risultati potrebbero non corrispondere ai valori di input con la precisione specificata. Il risultato dipende dall'hardware e dal sistema operativo del computer.
Sottotipi
È possibile utilizzare un operatore di sottotipo per stampare un valore in virgola mobile come valore ottale, decimale o esadecimale. L'operatore di sottotipo precede immediatamente il carattere di conversione. Questa tabella mostra le conversioni che possono utilizzare i sottotipi.
Tipo di valore di input | Sottotipo e carattere di conversione | Tipo di valore di output |
|---|
Numero in virgola mobile | %bx o %bX
%bo
%bu
| Valore esadecimale, ottale o decimale a doppia precisione
Esempio: %bx stampa pi come 400921fb54442d18 |
%tx o %tX
%to
%tu
| Valore esadecimale, ottale o decimale a precisione singola
Esempio: %tx stampa pi come 40490fdb |
Testo prima o dopo gli operatori di formattazione
formatSpec può anche includere testo ulteriore prima di un segno di percentuale % o dopo un carattere di conversione. Il testo può essere:
Comportamenti significativi delle conversioni con gli operatori di formattazione
Se si specifica una conversione che non si adatta ai dati, come una conversione di testo per un valore numerico, MATLAB® sovrascrive la conversione specificata e utilizza %e.
Esempio: '%s' converte pi in 3.141593e+00.
Se si applica una conversione di testo (%c o %s) a valori interi, MATLAB converte i valori che corrispondono a codici di carattere validi in caratteri.
Esempio: '%s' converte [65 66 67] in ABC.