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 %

4

3 回答 3

9

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

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

有关详细信息,请参阅MSDN 上的这篇文章

于 2009-04-20T18:48:04.623 回答
2

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

于 2009-04-20T18:48:37.617 回答
2

我做错了什么,还是这只是本机行为?

那是原生行为。它基本上不是Format解释字符串输入的工作。Format假设用户提供了正确的数据——在你的例子中是数字数据。字符串不是数字,即使它表示一个数字(这是 CS 中值/语义与其表示/语法之间最重要的区别!)。

于 2009-04-20T18:49:07.600 回答