::  Posts  ::  RSS  ::  ◂◂RSS  ::  Contact

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.

Comment via: google plus, facebook

More Posts:

Older Post:

Newer Post:


  ::  Posts  ::  RSS  ::  ◂◂RSS  ::  Contact