3
$\begingroup$

I would like to construct a function thats output is equal to the number of digits used to represent the number given as an input.

For example:
$f(5) = 1$
$f(9) = 1$
$f(13) = 2$
$f(99) = 2$
$f(682) = 3$
$f(999) = 3$
$f(9999)= 4$
etc.

Is it even possible with one function and if not, why not?
Can anyone help me with this or at least point me in the right direction?

  • 0
    possible duplicate of [Checking the digits in an integer](http://math.stackexchange.com/questions/34658/checking-the-digits-in-an-integer)2011-05-06
  • 1
    You have essentially defined the function, before you asked whether it is possible to define it. $$f(n)=\lfloor \log_{10}|n|\rfloor+1,$$ given in Listing's answer, is a nice formula for it, but $$f(n)=\text{ the number of digits used to represent }n$$ is a fine definition of a function $f$.2011-08-10

1 Answers 1

13

The function is for integers in $\mathbb{Z}$

$D_{10}(n)=\lfloor \log_{10}|n| \rfloor+1$

if $n \neq 0$ and $D_{10}(0):=1$. You can leave the absolute function away if you just want to look at positive integers.

Note that for any base you want you could use

$D_{b}(n)=\lfloor \log_{b}|n| \rfloor+1$

for digits in base b, this is quite nice.

You have to use floor because especially $D_{10}(10)=2$. $\log_{10}n$ is the logarithm to base 10.

  • 0
    Yours is better, not to say correct. :-)2011-05-05
  • 0
    Thanks yes, it is a mistake I also make often :)2011-05-05
  • 0
    Thanks, that is a wonderful solution. One question though, what does ":=" mean?2011-05-05
  • 0
    @logicbird: ":=" means 'is defined to be'. In particular, since $\log_{10} 0$ is undefined, you must address that specific input separately.2011-05-05
  • 0
    @Brandon: oh, I see. I figured 0 would need to be handled separately but I was not familiar with that syntax. thanks.2011-05-05