You don't mention what language you are using, if it's an integer BASIC that would explain why.
The trick is to scale the values, so 10.1 becomes 101 and 20.5 becomes 205 - if you multiply them together you get 20505, you then simply display the number with the decimal point inserted in the correct place, in this case 205.05 is the correct result. As you've multiplied (scaled) both inputs by 10, you have to divide the output by 100 - except you don't actually divide, you simply stick the decimal point 2 digits in.
This gives perfect accuracy, with no truncation of results - obviously your maths routines need to be of sufficient resolution to deal with the numbers involved.