使用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}"
答案 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());
}