Skip to main content
3 of 6
Removed some unnecessary spaces in golfed version.

Python, 121 bytes

After deleting my 1st answer (sry!) which could not handle small numbers due to machine epsilon issues, I found a different solution.

Golfed:

def f(x):z=[c for c in x];i=z.index(".");del z[i];print"+".join([str(int(o)*10**(i-j-1))for j,o in enumerate(z)if o>"0"])

Ungolfed:

def f(x):
  z=[c for c in x]
  i=z.index(".")
  del z[i]
  print "+".join([str(int(o)*10**(i-j-1)) for j,o in enumerate(z) if o>"0"])

Usage:

>>> f("32.009")
30+2+0.009

>>> f("100020003000009000000.0009")
100000000000000000000+20000000000000000+3000000000000+9000000+0.0009