Python 98*0.8=78.4 --- d=`len('X'*int("{}{:>02}".format(*(raw_input()+".0").split('.')))*2)`;print'%s.%s'%(d[:-3],d[-3:]) Python 74 (without bonus) --- d=len('X'*int(raw_input().replace('.',''))*2);print'%s.%s'%(d[:-3],d[-3:]) **Note** - `+` is used for string concatenation - `*` used to create copies of string **Ungolfed** def tip(): amount = raw_input() #Add an extra decimal point so that we can accept integer #amount amount += ".0" #Split the integer and decimal part whole, frac = amount.split('.') #Multiply amount by 100 :-) amount = "{}{:>02}".format(whole, frac) #Create amount copies of a character st = 'X'*amount #Double it st *= 2 #Calculate the Length d = len(st) #Display the result as 3 decimal fraction print'%s.%s'%(d[:-3],d[-3:]) **Note** In spirit of the question, I believe the following solution though follows all rules of the question is an abuse Python 41 ---- print __import__("operator")(input(),0.2) **Finally** If you insist that the mathematical symbols are forbidden, her is a 90 character solution Python 90 (without any mathematical symbol) --- print' '.join(str(int(raw_input().replace(".",""))<<1)).replace(' ','.',1).replace(' ','')