MSDN提供了一个数字占位符示例:
1234.5678 ("#####") -> 1235
我发现这很令人困惑(我预计是1234或更多),所以我用C#编写了以下代码片段来测试它:
Console.WriteLine(String.Format("{0:#}", 1234.5678));
Console.WriteLine(String.Format("{0:#####}", 1234.5678));
Console.WriteLine(String.Format("{0:#}", "1234.5678"));
Console.WriteLine(String.Format("{0:#####}", "1234.5678"));它给出了以下输出:
1235
1235
1234.5678
1234.5678请解释一下。
发布于 2009-08-21 14:59:23
前两个String.Format调用是格式化number (十进制)值。格式字符串设置为仅显示整数部分(小数点之前),因此值将进行四舍五入。
后两个String.Format调用是格式化字符串值,该值恰好包含数字的字符串表示形式。结果,您得到的正是您所提供的内容。数字占位符仅适用于传递给String.Format的数值。
发布于 2009-08-21 15:02:01
尝试:
Console.WriteLine(String.Format("{0:#####.##}", 1234.5678));这将会得到1234.57
您需要指定小数位。另外,最后两个是字符串,所以数字格式不适用。
发布于 2009-08-21 14:59:55
由于模式中没有定义小数位,因此数字会进行四舍五入。字符串不会四舍五入,因为它们是字符串。
https://stackoverflow.com/questions/1312454
复制相似问题