Цитата(Палыч @ Oct 7 2013, 11:57)

1. Пусть у нас есть три цифры: А - десятки единиц, В - единицы, С - десятые доли
2. Следует получить двоичное число, где запятая стоит перед четвертым разрядом (т.е. умноженное на 16 = 2 в степени 4) - см. документацию на м/с.
3. Из А,В и С получаем число АВС, выраженное в десятых долях (т.е. 10 раз большее чем есть на самом деле):
А*100 + В*10 + С
4. Вспоминаем (см.п2), что нам нужно число, умноженное на 16
(А*100 + В*10 + С) * 16
5. У нас же было число увеличенное в 10 раз (см.п3), поэтому делим на 10:
(А*100 + В*10 + С) * 16 / 10
надо проделать два шага:
1. разделить поля при помощи маскирования четырех младших бит и предварительного сдвига на 4 бита для единиц и на 8 для десятков. Я полагаю у вас все в одном 16 (или 32) битном числе.
2. Получив три числа надо одно умножить на 10 и сложить со вторым. Дробную часть отдельный вопрос. Неизвестно еще как она представлена. Если BCD, то наверное надо перейти к числам с плавающей запятой и поделив третье число на 10 прибавить к сумме.
Так вы получите значеное, которое можно использовать как угодно.
printf("%f", result);
Если вам только напечатать, то вместо второго шага можно сразу:
printf("%d%d,%d", val_x_10, val_x_1, val_x_0_1);
советую вам внимательно проверить как представлена дробная часть.