multiple digit number in to individual digits
조회 수: 100 (최근 30일)
이전 댓글 표시
i want to change the number 1123 in 1 1 2 3, want to split combine number into into individual numbers
댓글 수: 0
채택된 답변
Azzi Abdelmalek
2014년 7월 22일
a=1234
b=str2double(regexp(num2str(a),'\d','match'))
댓글 수: 3
Walter Roberson
2017년 2월 7일
a = '123*+'
for K = 1 : length(a)
fprintf('character #%d of "%s" is "%c"\n', K, a, a(K));
end
Adam Danz
2020년 4월 29일
For large values such as a=11122333345555566 this will not work since num2str will convert the value to '1.112233334555557e+16'. Otherwise nice solution.
추가 답변 (3개)
John D'Errico
2014년 7월 22일
N = 1123;
Ndigits = dec2base(N,10) - '0'
Ndigits =
1 1 2 3
댓글 수: 3
John D'Errico
2023년 2월 27일
편집: John D'Errico
2023년 2월 27일
Not difficult with a floating point number, but remember that a float is NOT an exact decimal representation of that number. But...
X = 1.2345;
dec2base(X*10000,10)
or
dec2base(X*10000,10) - '0'
You can even fuss around and get the decimal point in there if you want, but if you want that, then sprintf is arguably a better choice.
Jan
2017년 2월 7일
편집: Jan
2017년 2월 14일
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);
Ramon Villamangca
2018년 11월 20일
편집: Ramon Villamangca
2018년 11월 20일
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
댓글 수: 3
Ramon Villamangca
2023년 2월 27일
@Jyahway Dong: If the digits are that long, you'll probably input it as a char string, anyway. That means the solution would even be much simpler:
num = '62229893423380308135336276614282806444486645238749';
num - '0'
참고 항목
카테고리
Help Center 및 File Exchange에서 Numeric Types에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!