How do I round off exponential numbers?
7 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Nitin Samuel
am 17 Jan. 2013
Kommentiert: Walter Roberson
am 16 Nov. 2015
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).
0 Kommentare
Akzeptierte Antwort
Walter Roberson
am 17 Jan. 2013
Bearbeitet: Walter Roberson
am 17 Jan. 2013
ex = 10^(3-floor(log10(a)));
ar = round(a * ex) / ex;
Caution: might not work for 0 or infinities
6 Kommentare
Mikhail Lisakov
am 16 Nov. 2015
Bearbeitet: Walter Roberson
am 16 Nov. 2015
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
am 16 Nov. 2015
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.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Line Plots finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!