2009-04-20 6 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

私は、これは '複合書式設定' の予想される動作であると考えています。

最初の例では、数字の書式設定ルールを文字列に適用しようとしています。 2番目の例では、小数点以下の桁数を持つ数値に数値書式設定規則を適用しようとしています。

詳細については、this article on MSDNを参照してください。

2

適用しようとしている書式オプションは、数字だけに適用されます。 .NETには、CLRが型の文字列を検査するスマートな文字列の概念はありません。

2

私は何か間違っているのですか、これはちょうどネイティブな動作ですか?

これはネイティブの動作です。文字列入力を解釈するのは基本的にFormatの仕事ではありません。 Formatは、ユーザーが適切なデータを提供していることを前提としています。あなたのケースでは、数値データです。 が数字のを表していても、文字列は数値ではありません(これは、値/意味とその表現/構文の間でCSで最も重要な区別です)。