필터 지우기
필터 지우기

How do I round off exponential numbers?

조회 수: 7 (최근 30일)
Nitin Samuel
Nitin Samuel 2013년 1월 17일
댓글: Walter Roberson 2015년 11월 16일
I have a code for which I get a long exponential number eg. a = 2.572920056e-3 as the output. I need to round off only the non-exponential part i.e I want the output to be something like 2.573e-3.
I know how to round off integers using ceil, round etc, but how can one round off only the number outside the exponential like mentioned above. Also, the output varies so I cannot use a command with a fixed number like
(ceil(a*10^6)/10^6).
(The fixed number being '6' in this case).

채택된 답변

Walter Roberson
Walter Roberson 2013년 1월 17일
편집: Walter Roberson 2013년 1월 17일
ex = 10^(3-floor(log10(a)));
ar = round(a * ex) / ex;
Caution: might not work for 0 or infinities
  댓글 수: 6
Mikhail Lisakov
Mikhail Lisakov 2015년 11월 16일
편집: Walter Roberson 2015년 11월 16일
Solution is great but fails for powers > 0 (though I've used it to round significand to integer).
To account for possible powers greater than 0 there should be a condition like this :
if(ex < 0)
ar = round(a * ex) / ex;
} else {
ar = round(a / ex) * ex;
}
Walter Roberson
Walter Roberson 2015년 11월 16일
Different requirement, Mikhail. That formula would be for rounding decimals after the decimal point in fixed point format, but the original question was for rounding in engineering format.

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Line Plots에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by