将十进制格式化为长度为 9 的字符串,在“.”之前有 2 位数字(0 填充)之后是 6

Formatting decimal to string of length 9, 2 digits (0 padded) before '.' and 6 after it

我是 Biztalk 和 C# 的新手,我正在尝试格式化数字以满足以下要求

33.00 -> 33.000000
0.00 -> 00.000000
65.7777777 (random example that results in rounding) -> 65.7777777

到目前为止,我的右填充是成功的。下面是代码

Param1 = "2.00"
    if (param1.Contains(".")) 
     {
      Decimal convertDecimal = Convert.ToDecimal(param1);
      String temp=convertDecimal.ToString("F6", System.Globalization.CultureInfo.InvariantCulture);
      Console.WriteLine(temp); 
    }

输出:2.000000 预期输出:02.000000

知道如何包含前导零吗?

要添加前导 '0',您可以使用填充或修复格式字符串以包含前导 0。

至于省略 67.7777777777767.7777778 的四舍五入,您可以将其格式化为多一位并使用 string slicing 删除四舍五入的数字:

using System;

var precision = 7;

// add a leading 0 and add precision + 1 digits after 0
var fmt = $"00.{new string('0', precision + 1)}";

foreach (var param1 in new[]{"0.0","22.00", "77.777777777777"})
{
    Decimal convertDecimal = Convert.ToDecimal(param1);

    String temp = convertDecimal.ToString(fmt);
    Console.WriteLine(temp[..^1]); // temp = temp[..^1]; for later use
}

输出:

00.0000000
22.0000000
77.7777777    # temp is 77.77777778 - the 8 is sliced off the string

如果您不能使用切片,请使用长度为 1 的 string.substring(..)