2011-07-07 41 views
9

我試過int.parse,並將類轉換爲將字符串轉換爲int。將字符串轉換爲int而不會在開始處丟失零

雖然我正在轉換。我在開始時輸了0,我不想要。

例如:09999變成9999 - 我不想要這個。

我想保持原樣。

我該怎麼做?

+5

在數學上,前導0是無關緊要的。 09999和9999等於九千九百九十九。爲什麼你必須保持領先的零,如果它基本上是相同的數字? – BoltClock

+1

你想要一個具有前導零的整數表示? – Clayton

+0

這是令人困惑的。這僅用於打印/顯示此整數的值嗎? – Joe

回答

11

你不能。 int旨在表示數學整數。數字099999999在數學上完全相同。

也許這裏有一個不同的問題。你爲什麼需要這樣做?也許有更好的方法來做你想做的事情。

0

你不能。如果您希望它保持原樣,您將不得不將該值保留爲字符串。

3

不,int.Parse("09999")實際上返回0x0000270F。正好32位(因爲這是多大的int),其中18個是前導零(準確地說,一個是符號位,你可能會認爲只有17個前導零)。

只有當你將它轉換回一個你得到「9999」的字符串時,該字符串中前導零的存在與否纔會被轉換回字符串。

0

int類型不能有前導零

+1

所有'int'值的一半都有前導零(即零)。 –

+0

呵呵,你是對的! :) –

8

如果你想要做這樣的事情總是與5個地方打印您的號碼,它會像

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

如果你只是轉換爲int測試值,保留原始數據並在需要領先的zeor時使用它的字符串值。如果您在數學上使用整數後需要使用零填充,則必須在輸出時使用sprintf或類似的格式對其進行格式化。

0

你不能,但如果你需要將它轉換爲int並保留零,你可以創建它的副本,然後將其轉換爲int,那麼你將有兩個版本,一個是int,一個是字符串。

29
myNumber.ToString("D5"); 

//D代表「小數」,和5是你想要的數量要始終指定位數的金額。這將用零填充您的值,直到達到5位數。

+1

你是字面上唯一回答問題的人。有時候人們只是想以某種特定的方式來設計一些東西! – Kulahan

+0

@DanCallahan謝謝你回答這個問題,正是我所需要的。 – 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); 
相關問題