2012-06-07 14 views
11

Ho bisogno di fare una variabile contatore di 40 cifre. Si deve iniziare il più 0000000000000000000000000000000000000001
e incremento di
0000000000000000000000000000000000000002C# - incrementa il numero e tieni gli zeri in primo piano

Quando uso la classe int, si taglia fuori tutti gli zeri. Il problema è che ho bisogno di incrementare il numero e poi convertirlo in una stringa, con il numero corretto di zeri iniziali. La dimensione totale dovrebbe essere di 40 cifre. Quindi, se ho colpito 50, per esempio, dovrebbe assomigliare a questo:

0000000000000000000000000000000000000050

Come posso fare questo e mantenere gli zeri?

+1

ti servirà per usare qualcosa di più simile [BigInteger] (http://msdn.microsoft.com/en -us/library/system.numerics.biginteger.aspx) piuttosto che 'int', altrimenti l'incremento fallirà in breve tempo. Gli argomenti – HABO

risposta

26

Utilizzare il numero intero e il formato o eseguire il pad del risultato quando si converte in stringa. Come ad esempio

int i = 1; 
string s = i.ToString().PadLeft(40, '0'); 

Vedi Jeppe Stig Nielson's answer per un'opzione di formattazione che posso anche non ricordare.

+1

sono in ordine opposto ... – Tigran

+0

Sono stati corretti e grazie. –

+0

@RhysW, no, semplicemente si adatta alla lunghezza specificata con il carattere specificato. Non supererà quella lunghezza. Ad esempio, "123" .PadLeft (2, '0') restituirà semplicemente "123" –

19

Provare a utilizzare

int myNumber = ...; 
string output = myNumber.ToString("D40"); 

Naturalmente, il int potrà mai crescere così enorme come compilare tutti quei luoghi cifre (il più grande int avendo solo 10 cifre).

1

Basta convertire la stringa in int, eseguire l'aggiunta o altre operazioni, quindi riconvertire stringa con un adeguato numero di 0 iniziale di:

// 39 zero's + "1" 
string initValue = new String('0', 39) + "1"; 

// convert to int and add 1 
int newValue = Int32.Parse(initValue) + 1; 

// convert back to string with leading zero's 
string newValueString = newValue.ToString().PadLeft(40, '0'); 
0

che dovevo fare qualcosa di simile l'altro giorno, ma io solo bisogno di due zeri. Ho finito con

string str = String.Format("{0:00}", myInt); 

Non sono sicuro se è infallibile, ma cercare

String.Format("{0:0000000000000000000000000000000000000000}", myInt)