string.format()没有显示值

fle*_*sod 2 .net c#

任何人都可以告诉我为什么这个string.Format()没有显示第一个值?

long countLoop = 0;
long countTotal = 3721;

string.Format("Processed {0:#,###,###} lines of {1:#,###,###} ({2:P0})", countLoop, countTotal, ((double)countLoop / countTotal));
Run Code Online (Sandbox Code Playgroud)

我得到的结果是

Processed  lines of 3,721 (0 %) 
Run Code Online (Sandbox Code Playgroud)

但是,如果我将countTotal替换为数字1

string.Format("Processed {0:#,###,###} lines of {1:#,###,###} ({2:P0})", 1, countTotal, ((double)countLoop / countTotal));
Run Code Online (Sandbox Code Playgroud)

我明白了

处理1行3,721(0%).

有什么关于我不知道的string.Format吗?

p.s*_*w.g 5

请参阅"#"自定义格式说明符的文档:

请注意,即使零是字符串中的唯一数字,此说明符也不会显示不是有效数字的零.

如果您想在这种情况下显示"0",请查看"0"自定义格式说明符:

如果正在格式化的值在格式字符串中出现零的位置有一个数字,则该数字将复制到结果字符串; 否则,结果字符串中会出现零.

这应该适合你:

string.Format(
    "Processed {0:#,###,##0} lines of {1:#,###,###} ({2:P0})", 
    countLoop, countTotal, ((double)countLoop / countTotal));
Run Code Online (Sandbox Code Playgroud)