Asked by Zaza
on 4 Jan 2013

if i have

int = 12345;

length_int = 5;

???

*No products are associated with this question.*

Answer by Azzi Abdelmalek
on 4 Jan 2013

Edited by Azzi Abdelmalek
on 4 Jan 2013

Accepted answer

int=-123456789 max(ceil(log10(abs(int))),1)

Answer by Sean de Wolski
on 4 Jan 2013

Edited by Sean de Wolski
on 4 Jan 2013

**Edit**

nnz(num2str(int) - '-')

Show 1 older comment

Sean de Wolski
on 4 Jan 2013

Friedrich, neither work actually, consider -12345.

Friedrich
on 4 Jan 2013

Good point Sean. But then

numel(num2str(abs(int)))

should do ;)

Sean de Wolski
on 4 Jan 2013

arghh, you win!

Answer by Davide Ferraro
on 4 Jan 2013

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.

G A
on 4 Jan 2013

why, it works:

>> int = 12345678901234567890123

numel(num2str(int))

int =

1.2346e+22

ans =

23

Related Content

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today
## 1 Comment

## Jan Simon (view profile)

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/57970#comment_120731

What is the "length" of -1 and 0?