Round double value to 2 decimal
Afficher commentaires plus anciens
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 commentaires
the cyclist
le 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
le 21 Mar 2013
Walter Roberson
le 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
le 25 Mar 2013
Réponse acceptée
Plus de réponses (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 commentaire
Raúl
le 21 Mar 2013
Modifié(e) : Walter Roberson
le 22 Mar 2013
Catégories
En savoir plus sur Logical dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!