decimal t = 5.5M;
Console.WriteLine(TimeSpan.FromHours((double)t).ToString());
Это даст вам "05:30:00", что довольно близко.Затем вы можете отформатировать его так, чтобы получить желаемый результат:
var ts = TimeSpan.FromHours((double)t);
Console.WriteLine("{0} hrs {1} minutes", ts.Hours, ts.Minutes);
Обратите внимание, что существует вероятность потери точности при преобразовании из десятичного числа в двойное, но я не думаю, что это будет заметно на минутной шкале,Кто-то, имеющий скитоподобное понимание системы типов, мог бы здесь войти.