0

我目前正在使用循环分析一系列数字,如下所示:-

using (var cmd = new DBCommand(dbConnection))
    for (double i = 10; i < 100; i++)    
    {
        Do Stuff
    }

现在这按预期工作。我被要求将 i 的值扩展为从 00 开始。这意味着它将按如下方式循环:- 00, 01, 02, 03, 04 ..... 这就是问题所在,因为它目前分析 0 , 1, 2, 3 ..... 去掉前面的 0。

如何强制循环包含前导 0?

4

5 回答 5

3

数字没有前导零,为什么应该有?你想格式化一个代表数字的字符串。您可以"D2"使用ToString

for(int i=0; i < 100; i++)
{
    Console.WriteLine(i.ToString("D2"));
} 

演示

十进制 ("D") 格式说明符 "D"(或十进制)格式说明符将数字转换为十进制数字字符串 (0-9),如果数字为负数,则以减号为前缀。仅整数类型支持此格式。

于 2013-02-24T20:39:16.080 回答
1

诸如整数或浮点数之类的数字永远不会有前导零。如果你真的想要一个前导零,那么你需要使用字符串数据类型。

于 2013-02-24T20:30:58.910 回答
1

ToString调用方法时只需格式化数字:

value.ToString("D2")

D2是具有 2 位数字的十进制格式说明符。有关更多信息,请查看 MSDN标准数字格式字符串

于 2013-02-24T20:36:52.663 回答
0

数字在内部以二进制格式存储,即数字500000000000000000000000000000101在内存中存在(不考虑大/小端问题)。5只是在运行时不存在的 C# 代码中使用的文字。

如果您需要特殊格式的数字,请将其转换为字符串。

int i = 5;
string s = i.ToString("00"); // ==> "05"

也使用整数值作为循环变量;无论如何,您都需要整数。浮点数往往具有类似的值,4.999999999999而不是精确5的计算结果,可能会使循环循环一次太多。

for (int i = 10; i < 100; i++) {
   string s = i.ToString("00");
   // Do stuff with s
}
于 2013-02-24T20:42:44.160 回答
0

您将无法将前导添加0到 int,因此您必须使用字符串。

var stringNumbers = Enumerable.Range(0, 100).Select(i => i.ToString("D2"));
foreach (var stringNumber in stringNumbers)
{
    // Do Stuff
}
于 2013-02-24T20:43:44.120 回答