### Make Truncation be Rounding

May 22nd, 2016
ideas, math

When I see a number like "183" the first thing I see is a "1". If I'm looking very quickly, perhaps scanning a column of numbers, that might be all I see, and I'll approximate this number as "100" when "200" would be closer. Yes, truncation isn't the same thing as rounding, but wouldn't things be a lot easier if it were? Let's make it be that way.

To interpret a number today, you multiply each column by the size it represents and add them up:
number100s10s1ssum
1001001*100 + 0*10 + 0*1
1201201*100 + 2*10 + 0*1
1211211*100 + 2*10 + 1*1
1291291*100 + 2*10 + 9*1
1251251*100 + 2*10 + 5*1

With this new system, we still do this, but in each column our available options range from -5 to 4 instead of 0 to 9.

number100s10s1ssum
1001001*100 + 0*10 + 0*1
1201201*100 + 2*10 + 0*1
1211211*100 + 2*10 + 1*1
12913-11*100 + 3*10 + -1*1
12513-51*100 + 3*10 + -5*1

Here are a few more examples:

old notationnew notation
00
44
71-3
5791-4-2-1
432432
1999200-1

And here's a program to calculate these:

```def to_new_notation(x):
digits = []
carry = False
for digit in reversed([
int(x) for x in str(x)]):
if carry:
digit += 1
carry = False

if digit >= 5:
digit -= 10
carry = True

digits.append(digit)

if carry:
digits.append(1)

digits.reverse()
return digits
```

Update 2016-05-25: Truncation isn't actually rounding in this system unless you allow both 5 and -5 as digits. Thanks to Marius for pointing this out.