String.Format无法格式化字符串

6

看起来好像String.Format不能将字符串格式化为输入格式。我做错了什么,还是这只是本身的行为?

输入:0.37

这样不起作用。

string x = String.Format("{0:P}", myString)

输出:0.37

这个操作会产生一个结果。

string x = String.Format("{0:P}", Convert.ToDecimal(myString))

输出结果:37.00%

3个回答

9

我认为这是“复合格式化”的预期行为。

你的第一个示例尝试对字符串应用数字格式规则。你的第二个示例尝试对可以具有小数位的数字应用数字格式规则。

请参见MSDN上的这篇文章获取更多信息。


2
您正在尝试应用的格式选项仅适用于数字。在.NET中,没有智能字符串的概念,即CLR会检查字符串的类型。

2
我做错了什么吗?还是这只是本机行为?
这是本机行为。基本上,Format 不解释字符串输入。 Format 假定用户提供正确的数据 - 在您的情况下,是数值数据。即使一个字符串表示一个数字(这是计算机科学中关于值/语义和其表示/语法的重要区别!),它也不是数字。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接