@eurybaric: Obviously, you cannot rely on the fact that your language already has float (or double) arithmetic. Use only int/long and strings.
Here's my code so far:
import sys
def f(s):
a = s.find('.')
return (int(s[:a]+s[a+1:]), len(s)-(a+1))
tot=1
dec=0
for i in map(f, sys.argv[1:]):
tot *= i[0]
dec += i[1]
stot = str(tot)
slen = len(stot) - dec
print stot[:slen] + "." + stot[slen:]
It (kinda) works:
$ ./dec_mult.py 3.1 12.1
37.51
It's very rudimentary, and will probably break on any input slightly more complex than the given example. (It breaks if the input string doesn't have a dot in it...).
I'll be updating this soon after work.