round - Round to nearest decimal or integer - MATLAB (original) (raw)

Round to nearest decimal or integer

Syntax

Description

Y = round([X](#buftmpz-X)) rounds each element ofX to the nearest integer. In the case of a tie, where an element has a fractional part of 0.5 (within roundoff error) in decimal, the round function rounds away from zero to the nearest integer with larger magnitude.

example

Y = round([X](#buftmpz-X),[N](#buftmpz-N)) rounds to N digits:

example

Y = round([X](#buftmpz-X),[N](#buftmpz-N),[type](#buftmpz-type)) specifies the type of rounding. Specify "significant" to round to N significant digits (counted from the leftmost digit). In this case, N must be a positive integer.

example

Y = round(___,TieBreaker=[direction](#mw%5Fe51282fd-7461-4bab-9f38-6106551bb8b2)) rounds ties as specified by direction. Use this argument after any of the input argument combinations in the previous syntaxes.

example

Y = round([t](#buftmpz-t)) rounds each element of the duration array t to the nearest number of seconds.

example

Y = round([t](#buftmpz-t),[unit](#buftmpz-unit)) rounds each element of t to the nearest number of the specified unit of time.

example

Examples

collapse all

Round Matrix Elements

Round the elements of a 2-by-2 matrix to the nearest integer.

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

Round to Specified Number of Decimal Digits

Round pi to the nearest 3 decimal digits.

Round to Nearest Multiple of 100

Round the number 863178137 to the nearest multiple of 100.

Round Elements to Specified Number of Significant Digits

Round the elements of a vector to retain 2 significant digits.

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

Control Number Display While Rounding

The format command controls how MATLAB® displays numbers at the command line. If a number has extra digits that cannot be displayed in the current format, then MATLAB automatically rounds the number for display purposes. This display can lead to unexpected results when combined with the round function.

Consider the result of this subtraction operation, which displays 5 digits.

format short x = 112.05 - 110

The displayed result is 2.0500, which looks like a tie. However, due to the floating-point arithmetic error, the tie at a fractional part of 0.5 is not within roundoff error.

Based on the displayed value of x, rounding x to 1 decimal should return 2.1.

In fact, the problem here is that MATLAB is rounding x to 5 digits for display purposes. The round function returns the correct answer. Confirm the answer by viewing x with format long, which displays x rounded to 15 digits.

For comparison, show the rounding results for a tie that is within roundoff error and for a tie that is not within roundoff error.

Specify Rounding Direction for Ties

Create a vector of decimals that have ties, that is, decimals with a fractional part of 0.5 (within roundoff error).

X = 1×6

-2.5000 -1.5000 -0.5000 0.5000 1.5000 2.5000

Round the ties to the nearest even and odd integers.

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

Round the ties towards positive and negative infinity.

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

Round the ties away from zero and towards 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

Round Duration Values

Round each value in a duration array to the nearest number of seconds.

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 = 1x3 duration 08:29:01.00 08:30:02.00 08:31:02.00

Round each value in t to the nearest number of hours.

Y2 = 1x3 duration 08:00:00.00 09:00:00.00 09:00:00.00

Input Arguments

collapse all

X — Input array

scalar | vector | matrix | multidimensional array | table | timetable

Input array, specified as a scalar, vector, matrix, multidimensional array, table, or timetable. For complex X, round treats the real and imaginary parts independently.

X must be single, double,table, or timetable when you useround with more than one input.

round converts logical and char elements of X into double values.

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | logical | table | timetable
Complex Number Support: Yes

N — Number of digits

scalar integer

Number of digits, specified as a scalar integer. When you specify N, theround(X,N) function rounds X to the nearest multiple of 10_—N_.

If you specify the "significant" rounding type, then N must be a positive integer.

type — Rounding type

"decimals" (default) | "significant"

Rounding type, specified as "decimals" or "significant". The rounding type determines whether round considers digits in relation to the decimal point or the overall number of significant digits. N must be a positive integer when you specify"significant". In that case, theround function rounds to the nearest number withN significant digits.

The default value is "decimals", so thatround(X,N,"decimals") is equivalent toround(X,N).

Example: round(3132,2,"significant") returns 3100, which is the closest number to 3132 that has2 significant digits.

Data Types: char | string

direction — Direction to break ties

"fromzero" (default) | "tozero" | "even" | "odd" | "plusinf" | "minusinf"

Direction to break ties, specified as one of these values:

Ties are rare. When usinground(X,N,TieBreaker=direction), a tie occurs only when X * 10_N_ is within roundoff error of a point halfway between two consecutive integers, that is, X * 10_N_ has a fractional part of 0.5 (within roundoff error) in decimal.

Example: round(2.015,2,TieBreaker="even")

t — Input duration

duration array

Input duration, specified as a duration array.

unit — Unit of time

"seconds" (default) | "minutes" | "hours" | "days" | "years"

Unit of time, specified as "seconds", "minutes","hours", "days", or"years". A duration of 1 year is equal to exactly 365.2425 24-hour days.

Data Types: char | string

Tips

Extended Capabilities

Tall Arrays

Calculate with arrays that have more rows than fit in memory.

Theround function fully supports tall arrays. For more information, see Tall Arrays.

C/C++ Code Generation

Generate C and C++ code using MATLAB® Coder™.

Usage notes and limitations:

GPU Code Generation

Generate CUDA® code for NVIDIA® GPUs using GPU Coder™.

Usage notes and limitations:

Thread-Based Environment

Run code in the background using MATLAB® backgroundPool or accelerate code with Parallel Computing Toolbox™ ThreadPool.

This function fully supports thread-based environments. For more information, see Run MATLAB Functions in Thread-Based Environment.

GPU Arrays

Accelerate code by running on a graphics processing unit (GPU) using Parallel Computing Toolbox™.

The round function supports GPU array input with these usage notes and limitations:

For more information, see Run MATLAB Functions on a GPU (Parallel Computing Toolbox).

Distributed Arrays

Partition large arrays across the combined memory of your cluster using Parallel Computing Toolbox™.

This function fully supports distributed arrays. For more information, see Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox).

Version History

Introduced before R2006a

expand all

R2023a: Perform calculations directly on tables and timetables

The round function can calculate on all variables within a table or timetable without indexing to access those variables. All variables must have data types that support the calculation. For more information, see Direct Calculations on Tables and Timetables.

R2022a: Control tiebreak behavior

Specify how to break ties by using the TieBreaker name-value argument. For example, round(X,TieBreaker="tozero") rounds ties towards zero.

R2022a: round returns consistent results for ties

Starting in R2022a, the round function always rounds ties away from zero to the nearest multiple of 10_—N_ with larger magnitude by default. For example:

X = 1.015:5.015; N = 2; Y = round(1.015:5.015,2)

Y = 1.0200 2.0200 3.0200 4.0200 5.0200

In previous releases, the round function sometimes returned inconsistent results for ties by default. In the previous example, for instance, the second and third elements were rounded towards zero to 2.01 and3.01, respectively.

R2014b: Rounding to specified number of digits

In R2014b, these syntaxes were added to round to any number of decimal or significant digits and to round duration values:

Y = round(X,N) Y = round(X,N,type) Y = round(t)
Y = round(t,unit)

Older versions of MATLAB® support only this syntax, which rounds to the nearest integer: