me olía que hay algo más sencillo y es esto.
string salida = "51.2";
Console.Write(salida.PadRight(5, '0'));
En realidad, al trabajar con valores numéricos, lo más recomendable (e igual de sencillo) es aplicar un formato adecuado directamente al valor numérico mediante la funcionalidad provista para ello. El uso de funciones de relleno (
padding), aunque te de el resultado esperado, se reserva para alinear cadenas de texto.
Dicho esto, y para empezar, hay que tener en cuenta dos cosas en ese código que has compartido:
1. Estás asignando valores numéricos como cadenas de texto.
2. Estás usando el delimitador de decimales americano en las cadenas de texto, probablemente dentro de un contexto en español.
Teniendo esas dos cosas en cuenta, la solución adecuada a tu entorno se vería tal que así:
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en");
string value = "51.2";
string valueFormatted = $"{double.Parse(value):N2}";
Console.WriteLine(valueFormatted);
O expresado de forma ligeramente distinta:
string value = "51.2";
string valueFormatted = string.Format(CultureInfo.GetCultureInfo("en"), "{0:N2}", double.Parse(value));
Console.WriteLine(valueFormatted);
Aténtamente,
Elektro.