强制在for循环中使用前导0

本文关键字:for 循环 | 更新日期: 2023-09-27 18:00:45

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

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?

强制在for循环中使用前导0

数字没有前导零,为什么要有?您希望格式化表示数字的字符串。您可以在ToString:中使用"D2"

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

演示

  • 如何:用前导零填充数字
  • 标准数字格式字符串

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

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

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

value.ToString("D2")

D2是具有2位数字的Decimal格式说明符。有关详细信息,请查看MSDN标准数字格式字符串

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

var stringNumbers = Enumerable.Range(0, 100).Select(i => i.ToString("D2"));
foreach (var stringNumber in stringNumbers)
{
    // Do Stuff
}

数字在内部以二进制格式存储,即数字5将作为00000000000000000000000000000101存在于内存中(不考虑大小端问题)。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
}