How can I display numbers in scientific notation but in magnitudes of 3 and to 3 significant digits?
Show older comments
I am trying to display rounded values <double> in a uitable and would like do so concisely. Using scientific notation is great for this, but I would like to have the scientific notation display only as powers divisible by 3. Additionally, the I would also like to display 3 significant digits.
For example:
1 = 1
10 = 10
100 = 100
1000 = 1.00e3
10000 = 10.0e3
100000 = 100e3
1000000 = 1.00e6
4 Comments
Dyuman Joshi
on 1 Feb 2023
I am not sure about if displaying 3 significant digits is possible or not. (shortEng will have 4 digits after the decimal point)
Walter Roberson
on 1 Feb 2023
I seem to recall that someone posted appropriate formatting in the File Exchange
Allen
on 1 Feb 2023
John D'Errico
on 11 Feb 2023
sprintf SHOULD offer this as one of the options.
Answers (1)
Dongyue
on 7 Feb 2023
classdef ScientificNotation
properties(Access = private)
sign;
body;
digs;
num;
end
methods
function s = ScientificNotation(num)
s.num = num;
if num< 0
s.sign = '-';
else
s.sign = '';
end
num = double(abs(num));
if num<1000
s.body = "";
s.digs = string(num);
else
tmp = 0;
while num >= 1000
tmp = tmp +3;
num = num/1000;
end
s.body = "e"+string(tmp);
str = string(round(num,3,'significant'));
if strlength(str) == 1
str = str+".00";
elseif strlength(str) == 2
str = str+".0";
elseif strlength(str) == 3
if contains(str,'.')
str = str+"0";
end
end
s.digs = str;
end
end
function disp(s)
fprintf(string(s.num)+" = %s%s%s\n",[ s.sign, s.digs,s.body]);
end
end
end
Categories
Find more on App Building in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!