write a function to round off numbers

5 ビュー (過去 30 日間)
Zcarfaz
Zcarfaz 2014 年 2 月 28 日
コメント済み: Image Analyst 2014 年 2 月 28 日
Write your own roundn function that takes a floating point value as its input and rounds its nth decimal digit to the nearest number.
>> res = roundn(5.672,3); % results in res = 5.67
>> res = roundn(5.677,3); % results in res = 5.68
>> res = roundn(-5.672,3); % results in res = -5.67
>> res = roundn(-5.677,3); % results in res = -5.68

回答 (2 件)

Image Analyst
Image Analyst 2014 年 2 月 28 日
Try multiplying by a factor of 10 then rounding and dividing. That should be a good hint - probably too much of one.
  2 件のコメント
Zcarfaz
Zcarfaz 2014 年 2 月 28 日
ok I got this for but when i run the function it won't give the right answer but when I do it manually on the command window it works. also this is not the way i have to do it I need to write a for loop to check the value of the myfloat and then change the factor of 10 accordingly. please help. thanks!
function output = roundn(myinput,myfloat)
if myfloat == 1
output = round(myinput*10)/10;
fprintf('%.1f\n', output);
end
if myfloat == 2
output = round(myinput*100)/100;
fprintf('%.2f\n', output);
end
if myfloat == 3
output = round(myinput*1000)/1000;
fprintf('%.3f\n', output);
end
end
Image Analyst
Image Analyst 2014 年 2 月 28 日
Instead of checking for every possible factor of 10, why don't you just use 10^myFloat?
And how are you running it, if not from the command line? What value are you passing in when it does not run?

サインインしてコメントする。


Walter Roberson
Walter Roberson 2014 年 2 月 28 日
This cannot be done in MATLAB, not if the values are to be stored numerically as datatype single() or double().
>> fprintf('%.999g\n', 0.1)
0.1000000000000000055511151231257827021181583404541015625
This establishes that even if you had 0.1 already given, that you do not actually get exactly 0.1 stored.

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by