使用String.Format为所有占位符指定小数位

时间:2013-06-02 05:28:59

标签: c# .net string.format

使用String.Format语法,我知道我可以使用一定数量的小数位格式化double,如下所示:

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

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

我目前最好的选择是用正则表达式修改格式字符串。是否有更简洁的方法来指定由double格式化的所有String.Format应具有此精度?


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

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

1 个答案:

答案 0 :(得分:1)

为什么不为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());
}