Round double value to 2 decimal
Show older comments
Hi all,
I'm trying to round an array of double values to 2 decimals.
This is my code:
for k=1:n,
y(k)=k*st;
y(k)= sprintf('%0.2f', y(k));
x(k) = sqrt(d^2+(2*y(k))^2)-d;
x(k)= sprintf('%0.2f', x(k));
end
I got the following error message:
In an assignment A(I) = B, the number of elements in B and I must be the same.
BTW! the value n is 10.
I want the arrays y and x with 2 decimal values. Ex: 1.23
Thanks a lot.
Raúl. In an assignment A(I) = B, the number of elements in B and I must be the same.
4 Comments
the cyclist
on 21 Mar 2013
What is the size of your variable d? If it is a matrix, then it looks like the line
x(k) = sqrt(d^2+(2*y(k))^2)-d;
is trying to assign a matrix into a single element, and that will give the error you see.
Raúl
on 21 Mar 2013
Walter Roberson
on 22 Mar 2013
Are you trying to change how the number is displayed, or to assign a new value that is the old one rounded to 2 decimal digits?
Raúl
on 25 Mar 2013
Accepted Answer
More Answers (1)
How about this:
a = rand(1,10);
y ={};
n=length(a);
for k = 1:n
y{k} = sprintf('%0.2f',a(k));
end
Because sprintf returns a string, you need to put it in a cell: {}.
You could also round a like this (if you do not want strings):
a = rand(1,10);
y = round(a * 100)/100; % two decimals remain; more decimals are set to 0.
1 Comment
Raúl
on 21 Mar 2013
Edited: Walter Roberson
on 22 Mar 2013
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!