public static string PadZero(this double number, int decimalPlaces)
{
var requiredFormat = "0." + "".PadRight(decimalPlaces, '0');
var something = $"{number:requiredFormat}";
return number.IsNotZero() ? something: string.Empty;
}
这是一个帮助函数,用于将零填充为双数字,用户可以通过 decimalPlaces 传递需要填充的零个数。
上面的函数在我的单元测试中失败,在所有测试用例中收到的输出都是{requiredFormat}。
我刚刚使用通用变量 requiredFormat 替换了var something = $"{number:0.00}";
,它可以处理任意数量的零填充。
答案 0 :(得分:3)
您的示例有两个问题。第一个是something
的值不会产生可用于格式化数字的字符串。第二个原因是您没有使用something
来使用string.format
执行数字格式。
首先,声明:
var something = $"{number:requiredFormat}";
不会给你想要的结果,这将是一个类似于:
的字符串{0:0.0000}
尝试将代码更改为:
var something = $"{{0:{requiredFormat}}}";
如果在执行该语句后执行Console.WriteLine(something)
,您可以检查something
的值,以确保它正是您要查找的内容。
之后,更改此行:
return number.IsNotZero() ? something: string.Empty;
阅读:
return number.IsNotZero() ? string.Format(something, number) : string.Empty;
即使使用Interpolated Strings,您也必须构建变量格式并将其应用于两个单独的步骤。
希望有所帮助。