Convertir una cadena rellenada en un número en C#

Estoy usando el siguiente código:

string new = old.Substring(0,2).TrimStart('0') + "." + old.Substring(2,2).TrimStart('0');

para convertir de la siguiente manera:

0101 >> 1.1
99.10 >> 99.1
99.01 >> 99.01

El problema es que la siguiente conversión no funciona correctamente:

0100 >> 1.0

¿Hay una manera fácil de arreglar esto? No puedo entender por qué no se convierte correctamente. Es importante para mí tener el ".0" después del uno. Cuando ejecuto lo anterior, todo lo que veo es "1".

preguntado el 03 de mayo de 12 a las 16:05

Echa un vistazo a esto : stackoverflow.com/questions/711264/… -

Sus traducciones parecen inconsistentes. ¿Cómo se traduce 0101 a 1.1? no debería ser 1.01? ¿Estás asumiendo 2 decimales? -

El número a la izquierda del decimal y el número a la derecha no están relacionados. Entonces 45.25 >> 4525 y 10.01 >> 0101. -

Ayudaría si nos dijeras las reglas de cómo se traducen los números. Incluso su comentario no coincide con la pregunta original para 0101. -

2 Respuestas

TrimStart siempre eliminará TODOS los 0 con los que comienza la cadena. Entonces tu segunda parte termina siendo:

"00".TrimStart('0')

que siempre producirá una cadena vacía.

Intente esto en su lugar para asegurarse de obtener siempre ese 0:

string new = old.Substring(0,2).TrimStart('0') + "." + 
             old.Substring(2,2).TrimStart('0').PadLeft(1, '0');

contestado el 03 de mayo de 12 a las 17:05

¿Puedes llamar a Int32.TryParse() y luego dividir por 100?

string s = "0101";
int n;
if(int.TryParse(s, out n))
{
  decimal d = n / 100M;
  string x = d.Format("f2");
}

contestado el 03 de mayo de 12 a las 17:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.