質問

これは、String.Formatのは、入力として文字列をフォーマットしないであろうかのように思えます。私が何か間違ったこと、または本だけでネイティブ動作であるだろうか?

入力:0.37。

これは動作しません。

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

出力:0.37。

このはいます。

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

出力:37.00パーセント

役に立ちましたか?

解決

私は、これは「複合書式設定」の振る舞いを期待されていると信じています。

あなたの最初の例では、文字列に数値の書式ルールを適用しようとしています。あなたの第二の例は、小数点以下の桁を持つことができる数に数値の書式ルールを適用しようとしています。

多くのためのMSDN のこの記事を参照してください。情報ます。

他のヒント

あなただけ適用しようとしているフォーマットオプションは、数値のために動作します。 CLRは、タイプの文字列を検査する.NETのスマート文字列の概念がありません。

  

私が何か間違ったこと、またはこれだけでネイティブ動作であるだろうか?

これはネイティブの行動です。それは基本的に文字列の入力を解釈するFormatの仕事ではありません。あなたのケースでは、の数値のデータ - Formatは、ユーザーが適切なデータを提供することを想定しています。文字列は、それがの数(これは値/セマンティクスとその表現/構文の間CS内のすべての重要な違いです!)。

表していても、数値ではありません
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top