使用字符串格式格式化小数

formatting decimals using string format

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[=传递需要补零的个数17=]。 上面的函数没有通过我的单元测试,在所有测试用例中收到的输出都是 {requiredFormat} 。 我刚刚替换了: var something = $"{number:0.00}"; 为通用变量 requiredFormat 可以处理任意数量的零填充。

你的例子有两个问题。首先是 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;

即使使用内插字符串,您也必须构建变量格式并在两个单独的步骤中应用它。

希望对您有所帮助。