Convertir una cadena rellenada en un número en C#
Frecuentes
Visto 100 veces
-1
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".
2 Respuestas
0
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
0
¿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 c# or haz tu propia pregunta.
Echa un vistazo a esto : stackoverflow.com/questions/711264/… - Zaki
Sus traducciones parecen inconsistentes. ¿Cómo se traduce 0101 a 1.1? no debería ser 1.01? ¿Estás asumiendo 2 decimales? - Chris Dunaway
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. - user1321237
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. - The Moof