MATLAB Answers

multiple digit number in to individual digits

302 views (last 30 days)
Raza
Raza on 22 Jul 2014
Commented: Michael Ramage on 28 Aug 2020
i want to change the number 1123 in 1 1 2 3, want to split combine number into into individual numbers

Accepted Answer

Azzi Abdelmalek
Azzi Abdelmalek on 22 Jul 2014
a=1234
b=str2double(regexp(num2str(a),'\d','match'))
  3 Comments
Adam Danz
Adam Danz on 29 Apr 2020
For large values such as a=11122333345555566 this will not work since num2str will convert the value to '1.112233334555557e+16'. Otherwise nice solution.

Sign in to comment.

More Answers (3)

John D'Errico
John D'Errico on 22 Jul 2014
N = 1123;
Ndigits = dec2base(N,10) - '0'
Ndigits =
1 1 2 3
  2 Comments
Michael Ramage
Michael Ramage on 28 Aug 2020
How to do this with a floating point number?

Sign in to comment.


Jan
Jan on 7 Feb 2017
Edited: Jan on 14 Feb 2017
For getting the digits, a conversion to a string is an indirection. Staying at numerical values is usually faster:
N = 1123;
m = floor(log10(N)); % [EDITED] Thanks Stephen
D = mod(floor(N ./ 10 .^ (m:-1:0)), 10);
  3 Comments

Sign in to comment.


Ramon Villamangca
Ramon Villamangca on 20 Nov 2018
Edited: Ramon Villamangca on 20 Nov 2018
a simple single line solution:
>> num = 12345042117;
>> arrayfun(@(x) mod(floor(num/10^x),10),floor(log10(num)):-1:0)
ans =
1 2 3 4 5 0 4 2 1 1 7
  2 Comments
Stephen
Stephen on 28 Jan 2019
@Jyahway Dong: if you are going to use computers to perform operations on numbers then you have to learn about floating-point numbers and their properties, otherwise not many of your results will be reliable or make much sense.
For a number with that precision you will need to use the symbolic toolbox, or VPI class, or something similar:

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!

Translated by