2010-08-30 65 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); 
} 

我意识到这是一个在这里写的暴力方法。但是,如果它有诀窍,你可以用一个可重复使用的字符数组来优化它,而不是追加字符串。