格式说明符
部分的类可以在ToString的时候添加一个参数。
或者在格式字符串添加一个格式说明符。
int i = 12;
Console.WriteLine(i.ToString("x2"));
Console.WriteLine($"{i:x2}");
这是部分类型才有的功能。
主要讲数字的部分说明符,更多内容点这里
数字的格式说明符
D
十进制补位说明符,使用D+数字,可以把整数补零,
直到数字达到指定位数。
已经超出位数的无效。
int i=12;
Console.WriteLine(i.ToString("d4"));//0012
i = 12345;
Console.WriteLine(i.ToString("d3"));//12345
E
科学计数法,e的大小写决定了输出字符串e的大小写。
e后面的数字决定了小数点后有几位数
int i=12;
Console.WriteLine(i.ToString("e3"));//1.200e+xx
i = 12345;
Console.WriteLine(i.ToString("e0"));//1e+xx
F
定点数。可以控制小数的位数(会四舍五入)
double d = 1.0 / 7;
Console.WriteLine(d.ToString("f3"));//0.143
Console.WriteLine(d.ToString("f8"));//0.14285714
Console.WriteLine(d.ToString());//0.14285714285714285
X
16进制数。x的大小写决定了16进制下字母部分的大小写
后面跟随的数字是补0至至少多少位数
int d = 666;
Console.WriteLine(d.ToString("x3"));//29a
Console.WriteLine(d.ToString("x8"));//0000029a
自定义格式说明符
如果你想给你的类也加上这个功能,需要实现IFormattable接口
{
public int price;
public string name;
public string ToString(string s)
{
return ToString(s, default);
}
public string ToString(string format, IFormatProvider formatProvider)
{
if (format == "price")
return price.ToString();
if (format == "name")
return name?.ToString();
return ToString();
}
}
Book b = new Book() { price = 12, name = "绿里奇迹" };
Console.WriteLine($"{b:name}");