2010-08-30 44 views
-10

能有人給我的代碼做如下....強制的整數至少有2位長

如果整數1-9顯示的字符串01,02,03等。如果10或過度離開它。

string display = yourInt.ToString("00"); 

不起作用

+3

「yourInt」必須具備什麼樣的價值,因爲它不起作用,因爲這確實起作用 – CaffGeek 2010-08-30 20:14:23

+2

這確實起作用,您可以舉個例子說明它不適用嗎? – Pharabus 2010-08-30 20:23:40

+0

它工作如果yourInt實際上是Int32。 – abhishek 2010-08-30 20:30:39

回答

1

在任何語言(至少我知道的那些)和整數值類型將永遠不會有在下面10任何值2數字長度。

若要總是兩位數長度顯示它(如020512)必須將數字轉換成字符串,然後padding0

,否則你會評估它想:

String newValue = String.Format("{0:00}", yourInt); 

正如你看到的,你將有顯示它之前將它轉換成字符串......

+1

是的,這就是我所做的 – 2010-08-30 20:40:41

+8

我希望'intValue'永遠不會是負面的。 – 2010-08-30 20:44:48

+0

爲什麼這麼多downvotes?答案在技術上是正確的。有點奇怪,但是正確。 – 2016-08-27 14:40:03

50
string display = yourInt.ToString("00"); 
+0

+1 10秒前到達那裏。 – 2010-08-30 19:50:25

+0

這不起作用。這將在小數點後的小數點後工作,但它不適用於整數 – 2010-08-30 20:03:26

+2

@Nick LaMarca:它的工作基於您對問題的描述。因此,安東尼收到的讚揚。你能澄清一下,它對你來說「不起作用」嗎? – 2010-08-30 20:13:22

0

你的問題有點含糊:其中顯示呢?

無論如何,你可能會想看看String.Format

13

或者,在String.Format語法(在Console.WriteLine用於例如)

string s = String.Format("{0:00}", yourInt); 
+0

這does not工作它做同樣的事情的ToString(「00」),它不會添加一個前導零 – 2010-08-30 20:12:05

+5

@Nick:說真的,人,甚至試過這個還是你只是假設你知道什麼會發生? – 2010-08-30 20:14:02

+0

我只是試了幾次它返回例如1返回1,2返回2,3返回3等我需要01,02,03 – 2010-08-30 20:18:15

3

我不明白爲什麼.ToString("00")沒有工作。這個測試成功...

[TestMethod] 
    public void RightPadIntegersWithZero() 
    { 
     var values = new[] { -100, -20, -1, 0, 1, 5, 10, 100, 567 }; 
     var expecteds = new[] { "-100", "-20", "-01", "00", "01", "05", "10", "100", "567" }; 

     for (var i = 0; i < values.Length; i++) 
     { 
      var value = values[i]; 
      var expected = expecteds[i]; 

      var result = value.ToString("00"); 
      Assert.AreEqual(expected, result); 
     } 
    } 

你必須做一些比你的問題描述

0

這會做你想要什麼不同呢?

for (int i = -20; i < 100; i++) 
{ 
string s = i.ToString(); 
while (s.Length < 2) s = "0" + s; 
Console.WriteLine(s); 
} 

我意識到這是一個在這裏寫的暴力方法。但是,如果它有訣竅,你可以用一個可重複使用的字符數組來優化它,而不是追加字符串。

相關問題