# how can I break up a number into its separate digits

12 views (last 30 days)
Michael on 28 Jan 2022
Edited: DGM on 28 Jan 2022
how can I break up a number say ABCD into its components, A, B , C and D?
Would I use floor, ceil, or fix? or maybe another command?
##### 2 CommentsShowHide 1 older comment
DGM on 28 Jan 2022
I knew I was going to kick myself for not remembering that. It's like I can predict the future or something.

DGM on 28 Jan 2022
Edited: DGM on 28 Jan 2022
I'm sure I've seen more elegant ways, but off the top of my head, I don't remember. EDIT: ... oh.
I'm assuming we're talking about integers. You'll have to decide how you want to handle negative numbers. If you want the outputs to carry the sign of the input, you can do that:
a = -123456;
% a fairly straightforward way using text
b1 = sign(a)*str2double(num2cell(num2str(abs(a)).')).'
b1 = 1×6
-1 -2 -3 -4 -5 -6
% Stephen's comment above with sign-handling
b2 = num2str(a)-'0';
b2 = sign(a)*b2(b2~=-3)
b2 = 1×6
-1 -2 -3 -4 -5 -6
% a mathematical approach is instructive, and can be done with a loop
ndigits = max(floor(log10(abs(a)))+1,1);
b3 = zeros(1,ndigits);
aa = a;
for d = ndigits:-1:1
b3(d) = rem(aa,10);
aa = fix(aa/10);
end
b3
b3 = 1×6
-1 -2 -3 -4 -5 -6
% but even then, the loop isn't necessary
b4 = rem(fix(a./10.^(fix(log10(abs(a))):-1:0)),10)
b4 = 1×6
-1 -2 -3 -4 -5 -6
Michael on 28 Jan 2022
Thank you.
I was told to have multiple outputs so that is why I used them. We haven't learned very many commands. Fix, floor, ceil, mod. And the basic operators.

R2021b

### Community Treasure Hunt

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

Start Hunting!