强制在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?
数字没有前导零,为什么要有?您希望格式化表示数字的字符串。您可以在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
}