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 un valore che non si adatta alla conversione, ad esempio un valore numerico non intero per una conversione di testo, MATLAB® potrebbe sovrascrivere la conversione specificata.
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.