4
$\begingroup$

While it is trivial to simply remove the fractional part of an irrational or rational number, and in programming I could just use the floor() or ceil() functions, I was wondering how such calculation is done using basic arithmetic.

In other words, how can I get the integer part of a (base-10) number using merely addition, subtraction, multiplication and division?

Perhaps this is trivial, but after a bit of trying and a bit of googling, I couldn't quite get my head around it. Maybe it is not so trivial after all?

  • 0
    I don't think that it can be done, because no member in the set of rational numbers, other than 0 and 1, has any privileged position under these operations.2012-11-21

2 Answers 2

8

It's impossible.

If you consider the set of all functions $P$ containing $f(x) = x$ and when $f,g \in P$ we have the sum $f(x)+g(x) \in P$, etc. then

Theorem $\text{floor}$ is not contained in $P$.

proof: We prove this by finding a property that everything in $P$ has but $\text{floor}$ does not. All functions in $P$ are continuous, but floor is not.

  • 2
    You mean that $P={\bf Z}(X)$ (rational functions with integeral coefficients)? (Which, incidentally, is the same as ${\bf Q}(X)$.) ;)2012-11-21
  • 0
    It sounds very convincing, but I'm afraid my mathematical skills are too limited to follow your reasoning. Does this mean that `floor()` is a unique mathematical operation that cannot be expressed by other mathematical operations (log, sum, exp), or is it only impossible with basic arithmetics?2012-11-21
  • 0
    @Abel, Actually this is very simple and you will understand it fine. The idea is that `floor` has a special property that `+`, `-`, `*`, `/` and even `log` and `exp` don't have (but I didn't include `log` and `exp` in the proof), so you can never build it out of those operation. It's exactly like you said, it's a unique operation.2012-11-21
  • 1
    that "special property" is that it jumps (meaning it's not continuous somewhere): `floor(0.98)=0, floor(0.99)=0, floor(1)=1, floor(1.01)=1` none of the other functions have a jump like that, and combining them doesn't create a jump.2012-11-21
  • 0
    The jumping example makes it clear, thanks. Somehow it sounds odd, though you probably know what you are talking about. I mean, you can express multiplication with addition, you can express log with power series and so on. I guess I just never gave it too much thought until today when I found out I couldn't easily find a simple solution.2012-11-21
  • 0
    @spernerslemma: That is a very nice answer (+1)! But maybe it would be even clearer if you removed the (x) from '$f(x)+g(x)\in P$', and write out the 'etc.'. At least I accidentally read over the 'etc.' and was stuck until I read it again, more carefully, and then knowing what you meant by it :)2012-11-21
  • 0
    Division is continuous?2018-11-25
-1

It is possible to find the integer part of any number divided by two using basic arithmetic:

$$\text{Floor}\left(\frac{n}{2}\right) = \frac{n}{2} - \frac{1}{4} + \frac{(-1)^n}{4}.$$

I'm not aware of a solution for division by other numbers.

  • 1
    You mean any _integer_ divided by two.2014-08-23