3

通过String.Format语法,我知道我可以double使用一组小数位数来格式化 s,如下所示:

String.Format("{0:F8}", 0.123456789);

在大多数情况下这很好,但我正在编写一个函数,其中调用函数应该指定一个格式字符串。格式字符串指定函数与外部程序交互的方式。需要高精度,因此所有doubles 都需要格式化为 8 位小数。为了将接口与实现分开,我不能指望调用函数来理解对精度的需求,因此不能指望格式字符串在格式字符串中包含十进制说明符。

我目前最好的选择是使用正则表达式修改格式字符串。有没有一种更简洁的方法来指定double格式化的所有 sString.Format都应该具有这种精度?


该函数通常使用以下两个参数调用:

  • 格式字符串,例如"new Generator.{0} bus1={1} phases=3 model=1 status=fixed kV={2} Vminpu=0.5 Vmaxpu=2kW=0 kvAR={3}"
  • 一个 lambda 函数,将内部获取的对象映射到格式字符串的值数组。
4

1 回答 1

2

为什么不创建一个扩展方法double呢?它应该返回字符串转换double- 格式为您想要的精度(8 位小数)。所以调用函数可以只指定一个格式字符串..没有别的..不需要指定一个数字精度。

就像是:

static string ToPreciseString(this double data)
{
    return String.Format("{0:F8}", data);
}

因此,您正在创建的功能可能是这样的:

void MyFunction(string stringFormatWithoutPrecision)
{
    double anyDoubleValue; //i dont know where you get the double data from
    string formattedData = String.Format(stringFormatWithoutPrecision, anyDoubleValue.ToPreciseString());
}
于 2013-06-02T05:58:54.773 回答