ToStringメソッド()カスタム数値フォーマットで風変わり
質問
私は123456私はN0のカスタムフォーマットでの.NETのToString()メソッドを使用して十分に簡単見つける123,456にフォームで数値を変換しようとしています。
ただし、データのあるケースでは、私はこの方法を使用しながら、奇妙な形式を取得しています。
この場合、私は、コードをテストするために、私の入力テーブルのための動的たDataTableを作成しています。
DataTable dt = new DataTable();
dt.Columns.Add("Cases", typeof(Int32));
フォーマットが適用される前にたとえば、私のデータは次のようになります。
-------------------------------------------- | Cases | 2495 | 3937 | 3207 | 4173 | 4265 | --------------------------------------------
私はそれが次のようになりたいと思います。
------------------------------------------------- | Cases | 2,495 | 3,937 | 3,207 | 4,173 | 4,265 | -------------------------------------------------
私はそうのようなコードを使用して、それをフォーマットしようとします。
output.Rows[r][c] = Convert.ToInt32(input.Rows[c - 1][r + 1]).ToString("N0");
(注:私は、DataTableのを取り、別のDataTableにそれを移調していますので、奇妙なフォーマットの理由がある)
私は今、次のデータが返されます上記の書式を使用します。
-------------------------------------------------------------------------- | Cases | 01/02/0495 | 01/03/0937 | 01/03/0207 | 01/04/0173 | 01/04/0265 | --------------------------------------------------------------------------
私は、用いたもの小数点でそれを試してみました:
output.Rows[r][c] = Convert.ToInt32(input.Rows[c - 1][r + 1]).ToString("N01");
どの私に次の結果を与えます。
------------------------------------------------------ | Cases | 2495.0 | 3937.0 | 3207.0 | 4173.0 | 4265.0 | ------------------------------------------------------それは数がこのようにフォーマットすることができるという事実を受け入れているので、
これが今の私を混同しています。
私が試した次の事はそうのような文字列をフォーマットするさまざまな方法だった。
output.Rows[r][c] = string.Format("{0:N0}", input.Rows[c - 1][r + 1]);
output.Rows[r][c] = Convert.ToInt32(input.Rows[c - 1][r + 1]).ToString("#,##0");
これらはいずれも、私はどちらか希望の方法を数値書式を与えません。誰も私が間違っているつもりどこに助言することはできますか?私はポイントを逃していること、それはとても簡単ですか?
解決
それはあなたが間違ってDataTable
内の列のデータ型を設定したことを単純に私には見えます。 (それは現時点ではint
のように見える)DateTime
として、それが明示的にすることしてみます。
また - DataTable
の仕事は、の保留のデータにあります。それをDISPLYしません。あなたは、私が(列が文字列であることを、それをを伝える限り、あなたはのような)と思い、string
sとしてプリフォーマットし、それを格納することができます - しかし、あなたがint
としてそれを保存している場合は、ディスプレイを忘れます。すぐにConvert.ToInt32
を実行してきたように、あなたの仕事は終わりました。 DataGridView
(または何でも)の仕事はどのようにそれが表示されています。教えてのことの "N0" について...
他のヒント
のToString( "N")のように単純に "N" を使用してみてください。