# How to round the decimals?

211 views (last 30 days)

Show older comments

I have a number X = 0.135678

Then i just want to round it become 0.14. What to do?

Use round(X) will only give "0".

Thanks before :)

##### 10 Comments

Walter Roberson
on 18 May 2021

Right, these days round() in MATLAB supports passing in the number of decimal digits. When the question was originally asked, that option was not available.

Also, some of the users were needing to work in Simulink, but the round block https://www.mathworks.com/help/simulink/slref/roundingfunction.html does not support giving a number of decimal digits.

### Accepted Answer

Jos (10584)
on 11 Feb 2014

Edited: Stephen23
on 11 Nov 2015

A = [pi exp(1) 1/7]

Ndecimals = 2

f = 10.^Ndecimals

A = round(f*A)/f

### More Answers (7)

Walter Roberson
on 3 May 2012

##### 0 Comments

Steven Lord
on 7 Nov 2016

##### 0 Comments

Vladimir Melnikov
on 29 Apr 2020

Edited: Vladimir Melnikov
on 29 Apr 2020

the easiest way:

round (X,N)

e.g:

>> round(0.12345,1)

ans = 0.100000000000000

>> round(0.12345,2)

ans = 0.120000000000000

>> round(0.12345,3)

ans = 0.123000000000000

also read

>> doc round

##### 0 Comments

Andrei Bobrov
on 3 May 2012

use roundn from Mapping Toolbox

roundn(X,-2)

##### 1 Comment

Vladimir Melnikov
on 29 Apr 2020

roundn(1.12345,-1)

ans = 1.100000000000000

>> roundn(1.12345,-2)

ans = 1.120000000000000

>> roundn(1.12345,-3)

ans = 1.123000000000000

Wayne King
on 3 May 2012

One way here is:

X = 0.135678;

format bank;

X

Another way is:

format; %just returning the formatting

X = ceil(X*100)/100;

Probably the last way is the best because you don't have to mess with the formatting.

##### 2 Comments

Prateek Sahay
on 7 Nov 2016

##### 1 Comment

Walter Roberson
on 7 Nov 2016

That is what Jos's Answer does; http://www.mathworks.com/matlabcentral/answers/37262-how-to-round-the-decimals#answer_124002.

Note that the result of the round() would be 1557 not 1556.9

Note that the result will not be exact. There is no way to represent exactly 1.557 in binary floating point. The closest it gets is 1.556999999999999939603867460391484200954437255859375

This will display as 1.557 in most output modes, but it will not be exactly that value.

Jason Garcia
on 7 Feb 2019

Edited: Jason Garcia
on 7 Feb 2019

Maybe not exactly what you're looking for, but if you are looking for ceiling or floor measurements the below is a fun way to specifiy directly how you want to bin the array/value.

X = rand(100,1); %Rand 100 elmnt vector w/ range 0-1.

n = 100; %Use 100 for the nearest tenth.

cX = discretize(X,[0:1/n:1],[0+1/n:1/n:1]); %Rounds X UP to nearest 1/N.

%OR

fX = discretize(X,[0:1/n:1],[0:1/n:1-1/n]); %Rounds X DOWN to nearest 1/N.

##### 0 Comments

### See Also

### Categories

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!