似乎String.Format不会将字符串格式化为输入。我做错了什么,或者这只是本地行为?
输入:0.37
这不起作用。
string x = String.Format("{0:P}", myString)
输出:0.37
这样做。
string x = String.Format("{0:P}", Convert.ToDecimal(myString))
产出:37.00%
答案 0 :(得分:9)
我相信这是“复合格式化”的预期行为。
您的第一个示例是尝试将数字格式规则应用于字符串。您的第二个示例是尝试将数字格式规则应用于可以具有小数位的数字。
有关详细信息,请参阅this article on MSDN。
答案 1 :(得分:2)
您尝试应用的格式选项仅适用于数字。 .NET中没有智能字符串的概念,其中CLR检查字符串的类型。
答案 2 :(得分:2)
我做错了什么,或者这只是本地行为?
这是本机行为。解释字符串输入基本上不是Format
的工作。 Format
假设用户提供了正确的数据 - 在您的情况下,数字数据。字符串不是数字,即使它表示一个数字(这是值/语义与其表示/语法之间的CS中最重要的区别!)。