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.
Y = round([X](#buftmpz-X),[N](#buftmpz-N))
rounds to N
digits:
N > 0
: round toN
digits to the right of the decimal point.N = 0
: round to the nearest integer.N < 0
: round toN
digits to the left of the decimal point.
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.
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.
Y = round([t](#buftmpz-t))
rounds each element of the duration
array t
to the nearest number of seconds.
Y = round([t](#buftmpz-t),[unit](#buftmpz-unit))
rounds each element of t
to the nearest number of the specified unit of time.
Examples
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
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:
"fromzero"
— Round ties away from zero to the nearest integer with larger magnitude."tozero"
— Round ties towards zero to the nearest integer with smaller magnitude."even"
— Round ties to the nearest even integer."odd"
— Round ties to the nearest odd integer."plusinf"
— Round ties towards positive infinity to the nearest integer with larger value."minusinf"
— Round ties towards negative infinity to the nearest integer with smaller value.
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
format short
andformat long
both display rounded numbers. This display can cause unexpected results when combined with theround
function.- For display purposes, use sprintf to control the exact display of a number as a string. For example, to display exactly 2 decimal digits of
pi
(and no trailing zeros), usesprintf("%.2f",pi)
.
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:
- Code generation supports only the syntax
Y = round(X)
.
GPU Code Generation
Generate CUDA® code for NVIDIA® GPUs using GPU Coder™.
Usage notes and limitations:
- Code generation supports only the syntax
Y = round(X)
.
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:
- These syntaxes are not supported:
Y = round(X,N)
Y = round(X,N,type)
Y = round(___,TieBreaker=direction)
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
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: