2009-04-20 46 views
6

似乎String.Format不会将字符串格式化为输入。我做错了什么,或者这只是本地行为?String.Format不格式化字符串

输入:0.37

这是行不通的。

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

输出:0.37

这确实。

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

输出:37.00%

回答

9

我相信这是预期“复合格式的行为。

您的第一个示例是尝试将数字格式设置规则应用于字符串。你的第二个例子是试图将数字格式化规则应用于可以有小数位的数字。

查看this article on MSDN了解更多信息。

2

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

2

我做错了什么,或者这只是本地行为?

这是本机行为。这基本上不是Format解释字符串输入的工作。 Format假设用户提供正确的数据 - 在您的情况下,数字数据。一个字符串不是数字,即使代表一个数字(这是数值/语义与其表示/语法之间的CS中最重要的区别!)。