日期:2014-05-19  浏览次数:20927 次

C#中string.Format怎么用?
C++代码:
double   d   =   12.0025;
CString   str;
str.Format( "%0.3f ",   d);

ASSERT(str   ==   "12.003 ");

C#   如何实现类似功能?

------解决方案--------------------
str.format( "{0:%0.3f} ",d);
------解决方案--------------------
double d = 12.0025;
Text = string.Format( "{0:#.000} ", d);
------解决方案--------------------
double d=12.0025;
string str = string.Format( "{0:0.000} ", d);
if (str != "12.003 ")
{
throw new Exception();
}

------解决方案--------------------
1.可读性比连加好看
如:string str = "select * from "+ strTable + " where name= "+strValue;
而用Format
string.Format( "select * from {0} where name= '{1} ' ",strTable ,strValue);
在检查SQL 错误时,容易差错特别是出现 " ' ',% "这样的符号
2.格式化的时候不需要指定是什么数据类型
int nID = 1;
string str = "select * from "+ strTable + " where ID = "+nID.ToString();//nID需要转化成string
string.Format( "select * from {0} where ID={1} ",strTable ,nID);//nID在这里不需要转换

3.比C++格式化方式更灵活
当字符串出现相同的字符时,需要都列出来.如
C++ str.Format( " %0.3f ABCDEF %d %0.3f ", d,A,d);//参数根据 %的顺序而定
C# string.Format( " {0} ABCDEF {1} {0} ", d,A);//在{}需要指定参数的顺序


------解决方案--------------------
to zswang
如果我想要40个小数位
是不是得写成
{0:#.0000000000000000000000000000000000000000}?

汗。。。

可以这样写:
double D = Math.Round(d, 3, MidpointRounding.AwayFromZero);
D.ToString();