旧代码正在格式化数字.我如何以更现代/更易于理解的方式表达这一点



刚刚碰到这行代码:

string sNumFormat = new string('0', Convert.ToString(totalCount).Length);

其中 totalCount 是一个整数。

它在这里使用:

kNewComp.Name
    = baseName + string.Format("{0:" + sNumFormat + "}", 1 + componentIndex);

我很确定这只是一种确保数字用前导零填充的有趣方法,但我以前从未见过它像这样表达。

有没有更标准的方法来实现相同的效果?

NewComp.Name = baseName + string.Format("{0:" + sNumFormat + "}", 1 + componentIndex);

可以替换为

var s = (1 + componentIndex).ToString();
var digits = (int) (Math.Ceiling(Math.Log10(totalCount)));
Console.Write(s.PadLeft(digits, '0'));

然后你可以摆脱sNumFormat.

请注意,转换为string不是测量数字的好方法。请参阅:获取小数点前的位数

相关内容

最新更新