El problema con los decimales es que sprintf() no trabaja con float (en arduino).
Una solución que se me ocurre, suponiendo que quieres imprimir un número con 2 decimales y que siempre ocupe 8 posiciones
float numero = 123.45;
String cadena = " "; // 8 espacios
cadena += String(numero, 2);
cadena = cadena.substring(cadena.length() - 8));
Con lo que cadena contendrá "__123.45" (2 espacios delante del número).
Y si numero fuese 1.23 entonces cadena contendria "____1.23" (4 espacios delante del número).
Seguramente es mejorable pero, bueno, tené en cuenta que es domingo... ![]()
Saludos