how can i compute the length of an integer?
이전 댓글 표시
채택된 답변
추가 답변 (2개)
Sean de Wolski
2013년 1월 4일
편집: Sean de Wolski
2013년 1월 4일
Edit
nnz(num2str(int) - '-')
댓글 수: 4
Why this cast to an double array? Shouldn't
numel(num2str(int))
be enough?
Sean de Wolski
2013년 1월 4일
Friedrich, neither work actually, consider -12345.
Friedrich
2013년 1월 4일
Good point Sean. But then
numel(num2str(abs(int)))
should do ;)
Sean de Wolski
2013년 1월 4일
arghh, you win!
Davide Ferraro
2013년 1월 4일
Casting the variable into a string may be risky because you may get to "unexpected" cases such as:
int = 12345678901234567890123
numel(num2str(int))
ans =
12
You may consider a numeric approach using LOG10: floor(log10(int))+1 all numbers between 10 and 100 will have a LOG10 between 1 and 2 so you can use FLOOR to get the lower value (1 in this case) and then you need to add the value 1 cause you are trying to compute the number of digits and not the power of ten.
댓글 수: 1
why, it works:
>> int = 12345678901234567890123
numel(num2str(int))
int =
1.2346e+22
ans =
23
카테고리
도움말 센터 및 File Exchange에서 Numeric Types에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!