i have a problem rounding a loop

so if i write a loop that and it gives me a answer of .0215243225 you know just a huge number but i wanted to round it to the .0001, .001, .01. how would i do that i m using a for statment for a loop

댓글 수: 6

John D'Errico
John D'Errico 2019년 11월 6일
편집: John D'Errico 2019년 11월 6일
What is huge about the number you gave? I guess, compared to avogadro's number, it is huge. ;-)
But why in any remote scenario would you use a loop to do this, instead of using roundn? Why would you use a loop in any case?
Ok, this will do...
for loopindex = 1:1
x = roundn(x,2);
end
But it seems a bit of overkill.
Seriously, if this is not homework, then you need to answer why you would possibly not use roundn.
If it is homework, then you need to answer why we should be doing your homework for you, and even given that, why we would use a loop anyway.
Raul Castillo
Raul Castillo 2019년 11월 6일
i dont think you understood me lol (nice pun btw) but i am writing a code
with a loop because loops are great to use. on the other hand if i want to round any output up then how would i do that. so basically what im saying is that if i using a loop how can i get the output and round it to a specific decimal such as.01,.001,.0001.
John D'Errico
John D'Errico 2019년 11월 6일
편집: John D'Errico 2019년 11월 6일
I'm still a little confused. Let me give an example. I'll compute a simple result, doing it in a loop. Then I'll round the result to 2 decimal places, still inside the loop.
n = 5;
result = zeros(1,n); % preallocate vectors like this
for i = 1:n
result(i) = sin(i);
% rounding it, to 2 digits after the decimal
result(i) = round(result(i),2);
end
result
result =
0.84 0.91 0.14 -0.76 -0.96
Admittedly, I never needed to use a loop to do any of this, but to show it gave the desired result...
[1:5;sin(1:5);round(sin(1:5),2)]
ans =
1 2 3 4 5
0.84147 0.9093 0.14112 -0.7568 -0.95892
0.84 0.91 0.14 -0.76 -0.96
As you can see, the round operation inside the loop did what it is supposed to do.
But I have a very funny feeling that this is not what you are really asking.
Raul Castillo
Raul Castillo 2019년 11월 6일
no lol its okay thank you for the help sir i appreciate it!
Shubham Gupta
Shubham Gupta 2019년 11월 7일
편집: Shubham Gupta 2019년 11월 7일
Do you want to round the value to significant digits, which will change in a loop? For e.g.
a_answer= .0215243225;
for i = 2:5
output = round(a_answer,i)
end
% You will get output
output =
0.02
output =
0.022
output =
0.0215
output =
0.02152
It's basically the same method as mentioned by John, only instead of looping on values I looped it for significant digits.
You can do that without manually adjusting the number of digits by specifying the 'significant' option in your call to round.
>> a_answer= .0215243225;
>> round(a_answer, 3, 'significant')
ans =
0.0215
>> b = pi/1000;
>> round(b, 3, 'significant')
ans =
0.00314
>> round(b, 5)
ans =
0.00314

댓글을 달려면 로그인하십시오.

답변 (0개)

카테고리

도움말 센터File Exchange에서 Matrix Indexing에 대해 자세히 알아보기

질문:

2019년 11월 6일

댓글:

2019년 11월 7일

Community Treasure Hunt

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

Start Hunting!

Translated by