2012-06-07 43 views
3

我有一個數字,其長度將超過10位,因此我無法將其保存在INTEGER變量中。所以我將它保存在一個LONG變量中。現在的問題是,當使用該LONG變量添加一個數字時,它會返回一個Round值。我正在使用C#。將單個數字轉換爲超過2位數

對於如:

long empId = 00000000001; 
long answer = empId + 1; // 00000000001 + 1 = 2; 
// answer == 2; 

,但預期的答案是 「00000000002」,如何實現這個..

在此先感謝..

+7

您似乎在理解值與其字符串表示之間的差異時遇到了問題。 – leppie

+0

使用String.Format(「{0:0000000000}」,答案)..它應該用零填充 –

+1

確實... 00000000001 == 1和1 + 1 == 2和00000000002 == 2 ...因此問題不是C#,但是你希望用前導零來格式化(前導零對數字沒有影響)。 –

回答

5

考慮使用empId.ToString("D11")。這只是System.Int64(在C#中也稱爲long)的字符串表示形式。

+0

謝謝..以上答案也是正確的,但在我的情況下這個答案幫助我..謝謝大家.. – prabhuK2k

2

的前導零不顯著,它們不是數值的一部分。這只是一個格式化工件。如果您想保留0,請使用適當的格式字符串將數字轉換回字符串。

long value = ... 
string s = value.ToString("0000000000"); 
+0

@ Mr47,你是什麼意思? 「0000000000」是正確的格式字符串,用於格式化帶有前導零的10位數的值 –

+0

我的錯誤;有點太快評論... :) – Mr47

3

當你在談論數字,000000000022代表同樣的事情。如果你想用零填充該數字的string表示再嘗試這樣的事:

answer.ToString().PadLeft(11, '0'); 

這將確保該字符串長度至少爲11個字符,並會在空的空間填充零。

+1

我最好去找答案。ToString(「000000000#」) –

+0

@SoMoS你也可以使用'String.Format'。有很多方法可以做到這一點,對於給定的情況,我不認爲它們中的任何一個都有明顯的優勢。 – ean5533

+0

同意。我的意思是說String.Format看起來更像一種常見的方式。 –

1

00000000002和2是相同的長值。如果你想擁有零的開始,你可以使用Long.ToString(字符串格式)方法:

string strAnswer = answer.ToString("00000000000"); 
0

只需添加整數或多頭,然後將其轉換爲字符串,並調用string.PadLeft

從文檔:

返回一個新字符串,通過填充他們在左邊有指定的Unicode字符,對於 指定的總長度右對齊字符在這種情況下 。

0

如果數字00000000001表示爲數字,則實際上只有1。如果您希望它在前面顯示多個0,則當您顯示它時,我建議使用String.PadLeft。例如:如果你想用零到左邊來填充你的電話號碼,直到共有11個數字的

long empId = 00000000001; // Actually sets empID to 1 

long answer = empId + 1; // 1 + 1 = 2 

string formattedAnswer = 1.ToString().PadLeft(10, '0'); // Creates a string of "0000000001" 
1
string VALUE = answer.ToString("00000000000");