У вас есть децимальный разделитель. Все, что до него переводите в int, затем присваиваете переменной типа float tmp_float, то, что после точки/ запятой так же преобразовываете в int и float.
В очень укрупненном варианте может все выглядеть так:
CODE
tmp_int = get_integer();
tmp_float = tmp_int;
tmp_int = get_integer();
tmp_float += (float) tmp_int * 0.1;
Функцию get_integer() тогда нужно реализовать так, чтобы сначала она удаляла из буфера все символы, которые не являются цифрами(не попадающие в границы от '0' до '9'), затем преобразовывала последующие числа в int до децимального разделителя.
Вообще подумайте, нужно ли вам именно то, что вы спросили. Часто оказывается возможной передача данных с заранее оговоренной размерностью, например 0.001, а потом умножаете на какой угодно коэффициент.
Соответственно, обычно с ASCII работать тоже нет нужды, если вы не хотите работать с устройством через консоль (имитатор терминала tty)