2011-07-07 45 views
9

Intenté int.parse, y convertí clase para convertir una cadena a int.Conversión de cadena a int sin perder el cero al comienzo

Mientras estoy convirtiendo. Estoy perdiendo el 0 al principio que no quiero.

Ej: 09999 se convierte en 9999 - No quiero esto.

Quiero mantenerlo como está.

¿Cómo puedo hacer eso?

+5

Matemáticamente, el 0 como protagonista es insignificante. 09999 y 9999 son igualmente nueve mil novecientos noventa y nueve. ¿Por qué debe mantener el cero inicial si es esencialmente el mismo número? – BoltClock

+1

¿Desea una representación entera con un cero inicial? – Clayton

+0

Esto es confuso. ¿Esto solo sirve para imprimir/mostrar el valor de este entero? – Joe

Respuesta

11

No puede. Un int pretende representar un número entero matemático. Los números 09999 y 9999 son exactamente el mismo número, matemáticamente.

Quizás haya un problema diferente aquí. ¿Por qué necesitas hacer esto? Tal vez haya una mejor manera de hacer lo que quieres hacer.

0

no se puede. Tendrás que mantener el valor como una cadena si quieres que siga siendo así.

3

No, int.Parse("09999") en realidad devuelve 0x0000270F. Exactamente 32 bits (porque así es como es grande int), 18 de los cuales son ceros iniciales (para ser precisos, uno es un bit de signo, se podría argumentar que solo hay 17 ceros a la izquierda).

Es solo cuando lo convierte de nuevo en una cadena que obtiene "9999", la presencia o ausencia del cero inicial en dicha cadena se controla mediante la conversión de nuevo a la cadena.

0

valores int no pueden tener ceros a la izquierda

+1

La mitad de todos los valores 'int' tienen ceros a la izquierda (bits cero, eso es). –

+0

Jeje, ¡tienes razón! :) –

8

Si quieres hacer algo como siempre imprimir su número con 5 lugares, va como

myNumber.ToString().PadLeft(5, '0'); 
0

Si se acaba convirtiendo a int para probar el valor , mantenga los datos originales y use el valor de la cadena cuando quiera el zeor principal. Si necesita que el entero tenga relleno cero después de trabajar matemáticamente con él, tendrá que formatearlo con sprintf o similar siempre que lo muestre.

0

no puedes, pero si usted necesita para su emisión en INT y mantener los ceros que puede crear una copia de ella y luego echarlo a int, entonces tendrá dos versiones de ella una como int y uno como cadena.

29
myNumber.ToString("D5"); 

//D representa 'decimal', y 5 es la cantidad de dígitos que desea que el número sea siempre. Esto rellenará su valor con ceros hasta que alcance 5 dígitos.

+1

Eres literalmente el único pesón que respondió la pregunta. ¡A veces la gente solo quiere formatear algo de una manera específica! – Kulahan

+0

@DanCallahan gracias por responder esta pregunta, era exactamente lo que necesitaba. – Baxter

0
// For our requirement that new ID's should be of same length as old ID's. 
string strID = "002017"; 
int number = int.Parse(strID); 
string newID = (++number).ToString("D" + strID.Length); 
Cuestiones relacionadas