Round double value to 2 decimal
Mostra commenti meno recenti
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 Commenti
the cyclist
il 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
il 21 Mar 2013
Walter Roberson
il 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
il 25 Mar 2013
Risposta accettata
Più risposte (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 Commento
Raúl
il 21 Mar 2013
Modificato: Walter Roberson
il 22 Mar 2013
Categorie
Scopri di più su Logical in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!