首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >String.Format问题

String.Format问题
EN

Stack Overflow用户
提问于 2009-08-21 14:55:32
回答 6查看 496关注 0票数 0

MSDN提供了一个数字占位符示例:

1234.5678 ("#####") -> 1235

我发现这很令人困惑(我预计是1234或更多),所以我用C#编写了以下代码片段来测试它:

代码语言:javascript
复制
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"));

它给出了以下输出:

代码语言:javascript
复制
1235
1235
1234.5678
1234.5678

请解释一下。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-08-21 14:59:23

前两个String.Format调用是格式化number (十进制)值。格式字符串设置为仅显示整数部分(小数点之前),因此值将进行四舍五入。

后两个String.Format调用是格式化字符串值,该值恰好包含数字的字符串表示形式。结果,您得到的正是您所提供的内容。数字占位符仅适用于传递给String.Format的数值。

票数 13
EN

Stack Overflow用户

发布于 2009-08-21 15:02:01

尝试:

代码语言:javascript
复制
Console.WriteLine(String.Format("{0:#####.##}", 1234.5678));

这将会得到1234.57

您需要指定小数位。另外,最后两个是字符串,所以数字格式不适用。

票数 2
EN

Stack Overflow用户

发布于 2009-08-21 14:59:55

由于模式中没有定义小数位,因此数字会进行四舍五入。字符串不会四舍五入,因为它们是字符串。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1312454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档