Main Content

round

Arrotondare al decimale o al numero intero più vicino

Descrizione

esempio

Y = round(X) arrotonda ciascun elemento di X al numero intero più vicino. In caso di parità, se un elemento ha una parte frazionaria di 0.5 in decimale (entro l'errore di arrotondamento), la funzione round arrotonda lontano da zero al numero intero più vicino di magnitudine maggiore.

esempio

Y = round(X,N) arrotonda a N cifre:

  • N > 0: arrotondare a N cifre alla destra del punto decimale.

  • N = 0: arrotondare al numero intero più vicino.

  • N < 0: arrotondare a N cifre alla sinistra del punto decimale.

esempio

Y = round(X,N,type) specifica il tipo di arrotondamento. Specificare "significant" per arrotondare a N cifre significative (contate dalla cifra più a sinistra). In questo caso, N deve essere un numero intero positivo.

esempio

Y = round(___,TieBreaker=direction) arrotonda le parità come specificato da direction. Utilizzare questo argomento dopo una qualsiasi combinazione di argomenti di input nelle sintassi precedenti.

esempio

Y = round(t) arrotonda ciascun elemento dell’array duration t al numero di secondi più vicino.

esempio

Y = round(t,unit) arrotonda ciascun elemento di t al numero più vicino di unità di tempo specificata.

Esempi

comprimi tutto

Arrotondare gli elementi di una matrice 2x2 al numero intero più vicino.

X = [2.11 3.5; -3.5 0.78];
Y = round(X)
Y = 2×2

     2     4
    -4     1

Arrotondare pi alle 3 cifre decimali più vicine.

Y = round(pi,3)
Y = 3.1420

Arrotondare il numero 863178137 al multiplo più vicino di 100.

round(863178137,-2)
ans = 863178100

Arrotondare gli elementi di un vettore per mantenere 2 cifre significative.

X = [1253 1.345 120.44]
X = 1×3
103 ×

    1.2530    0.0013    0.1204

Y = round(X,2,"significant")
Y = 1×3
103 ×

    1.3000    0.0013    0.1200

Il comando format controlla il modo in cui MATLAB® visualizza i numeri alla riga di comando. Se un numero presenta delle cifre in più che non possono essere visualizzate nel formato corrente, MATLAB arrotonda automaticamente il numero ai fini della visualizzazione. Questa visualizzazione può portare a risultati inaspettati se combinata con la funzione round.

Si consideri il risultato di questa operazione di sottrazione, che visualizza 5 cifre.

format short
x = 112.05 - 110
x = 2.0500

Il risultato visualizzato è 2.0500, che sembra una parità. Tuttavia, a causa dell'errore aritmetico in virgola mobile, la parità in una parte frazionaria di 0.5 non rientra nell'errore di arrotondamento.

In base al valore visualizzato di x, l'arrotondamento di x a 1 decimale dovrebbe restituire 2.1.

y = round(x,1)
y = 2

Di fatto, il problema è che MATLAB arrotonda x a 5 cifre per motivi di visualizzazione. La funzione round restituisce la risposta corretta. Confermare la risposta visualizzando x con format long che mostra x arrotondato a 15 cifre.

format long
x
x = 
   2.049999999999997

A titolo di confronto, mostrare i risultati dell'arrotondamento per una parità che rientra nell'errore di arrotondamento e per una parità che non vi rientra.

x1 = 2.05
x1 = 
   2.050000000000000

y1 = round(x1,1)
y1 = 
   2.100000000000000

x2 = 2.05 - eps(2.05)
x2 = 
   2.049999999999999

y2 = round(x2,1)
y2 = 
     2

Crea un vettore di decimali che contenga parità, ossia decimali con un parte frazionaria di 0.5 (entro l'errore di arrotondamento).

X = -2.5:1:2.5
X = 1×6

   -2.5000   -1.5000   -0.5000    0.5000    1.5000    2.5000

Arrotondare le parità ai numeri interi pari e dispari più vicini.

Yeven = round(X,TieBreaker="even")
Yeven = 1×6

    -2    -2     0     0     2     2

Yodd = round(X,TieBreaker="odd")
Yodd = 1×6

    -3    -1    -1     1     1     3

Arrotondare le parità verso l'infinito positivo e negativo.

Yplusinf = round(X,TieBreaker="plusinf")
Yplusinf = 1×6

    -2    -1     0     1     2     3

Yminusinf = round(X,TieBreaker="minusinf")
Yminusinf = 1×6

    -3    -2    -1     0     1     2

Arrotondare le parità lontano da zero e verso zero.

Yfromzero = round(X,TieBreaker="fromzero")
Yfromzero = 1×6

    -3    -2    -1     1     2     3

Ytozero = round(X,TieBreaker="tozero")
Ytozero = 1×6

    -2    -1     0     0     1     2

Arrotondare ciascun valore in un array di durata al numero di secondi più vicino.

t = hours(8) + minutes(29:31) + seconds(1.3:0.5:2.3);
t.Format = "hh:mm:ss.SS"
t = 1x3 duration
   08:29:01.30   08:30:01.80   08:31:02.30

Y1 = round(t)
Y1 = 1x3 duration
   08:29:01.00   08:30:02.00   08:31:02.00

Arrotondare ciascun valore in t al numero di ore più vicino.

Y2 = round(t,"hours")
Y2 = 1x3 duration
   08:00:00.00   09:00:00.00   09:00:00.00

Argomenti di input

comprimi tutto

Array di input, specificato come scalare, vettore, matrice, array multidimensionale, tabella o orario. Per le X complesse, round tratta le parti reali e immaginarie in modo indipendente.

X deve essere single, double, table o timetable quando si utilizza round con più di un input.

round converte gli elementi logici e char di X in valori double.

Tipi di dati: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | logical | table | timetable
Supporto numeri complessi:

Numero di cifre, specificato come intero scalare. Quando si specifica N, la funzione round(X,N) arrotonda X al multiplo più vicino di 10—N.

Se si specifica il tipo di arrotondamento "significant", N deve essere un numero intero positivo.

Tipo di arrotondamento, specificato come "decimals" o "significant". Il tipo di arrotondamento determina se round considera le cifre in relazione alla virgola decimale o al numero complessivo di cifre significative. N deve essere un numero intero positivo quando considera le cifre in relazione alla virgola decimale o al numero complessivo di cifre significativo se si specifica "significant". In questo caso, la funzione round arrotonda al numero più vicino con N cifre significative.

Il valore predefinito è "decimals", in modo che round(X,N,"decimals") sia equivalente a round(X,N).

Esempio round(3132,2,"significant") restituisce 3100, che è il numero più vicino a 3132 con 2 cifre significative.

Tipi di dati: char | string

Indicazioni per interrompere le parità, specificate come uno dei seguenti valori:

  • "fromzero": arrotonda le parità lontano da zero al numero intero più vicino di magnitudine maggiore.

  • "tozero": arrotonda le parità verso lo zero al numero intero più vicino di magnitudine minore.

  • "even": arrotonda le parità al numero intero pari più vicino.

  • "odd": arrotonda le parità al numero intero dispari più vicino.

  • "plusinf": arrotonda le parità verso l'infinito positivo al numero intero più vicino con valore maggiore.

  • "minusinf": arrotonda le parità verso l'infinito negativo al numero intero più vicino con valore minore.

Le parità sono alquanto rare. Quando si utilizza round(X,N,TieBreaker=direction), si verifica una parità solo quando X * 10N si trova entro un errore di arrotondamento di un punto a metà strada tra due numeri interi consecutivi, ossia X * 10N ha una parte frazionaria di 0.5 in decimale (entro l'errore di arrotondamento).

Esempio round(2.015,2,TieBreaker="even")

Durata dell’input, specificata come array di duration.

Unità di tempo, specificata come "seconds", "minutes", "hours", "days" o "years". La durata di 1 anno equivale esattamente a 365,2425 giorni di 24 ore.

Tipi di dati: char | string

Suggerimenti

  • format short e format long visualizzano entrambi i numeri arrotondati. Questa visualizzazione può causare risultati imprevisti se combinata con la funzione round.

  • Ai fini della visualizzazione, utilizzare sprintf per controllare l'esatta visualizzazione di un numero come stringa. Ad esempio, per visualizzare esattamente 2 cifre decimali di pi (senza zeri finali), utilizzare sprintf("%.2f",pi).

Funzionalità estese

Cronologia versioni

Introduzione prima di R2006a

espandi tutto