Strtol

Score: 302.56 (pass)

one line solution :)

#!perl -nl
@d=qw(z o tw th fo fi si se ei n te el);%h=qw(tho 3 m 6 b 9);for(split/\s/){$r+=$s*"1e$h{$1}",$s=0,next if/\b(tho|m|b)/;$s*=100,next if/\bh/;$f=1;$q=$_;$e=grep{$f&&($q=~/^$_/?$f=0:1)}@d;$e*=10 if/ty\b/;$e+=10 if/(een|lve)\b/;$s+=$e if$e>=0;}$r+=$s if$e>=0;1 while$r=~s/(\d+)(\d{3})/$1,$2/g;print$r;

Score: 379.65 (pass)

first shot (third place ;-)

#!perl -nl
@d=qw(z o tw th fo fi si se ei n te el);
%h=qw(tho 3 m 6 b 9);
for(split/\s/) {
        $r+=$s*"1e$h{$1}",$s=0,next if/\b(tho|m|b)/;
        $s*=100,next if /\bh/;
        $f=1;$q=$_;
        $e = grep{$f&&($q=~/^$_/?$f=0:1)}@d;
        $e*=10 if/ty\b/;
        $e+=10 if/(een|lve)\b/;
        $s+=$e if $e>=0;
}
$r+=$s if $e>=0;
1 while $r=~s/(\d+)(\d{3})/$1,$2/g;
print $r;