123456 の形式の数値を 123,456 に変換しようとしていますが、これは、N0 のカスタム形式で .NET ToString() メソッドを使用することで簡単に見つけることができます。
ただし、データの 1 つのケースでは、この方法を使用しているときに奇妙な形式が得られます。
この場合、コードをテストするために入力テーブルの DataTable を動的に生成しています。
DataTable dt = new DataTable();
dt.Columns.Add("Cases", typeof(Int32));
たとえば、フォーマットが適用される前のデータは次のようになります。
-------------------------------------------- | | ケース | 2495 | 3937 | 3207 | 4173 | 4265 | --------------------------------------------
私はそれがこのように見えることを望みます。
-------------------------------------------------- | | ケース | 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 に転置しているためです。)
上記のフォーマットを使用すると、次のデータが返されます。
-------------------------------------------------- ------------------------ | | ケース | 01/02/0495 | 01/03/0937 | 01/03/0207 | 01/04/0173 | 01/04/0265 | -------------------------------------------------- ------------------------
次に、次を使用して小数点以下1桁で試しました。
output.Rows[r][c] = Convert.ToInt32(input.Rows[c - 1][r + 1]).ToString("N01");
これにより、次の結果が得られました。
-------------------------------------------------- ---- | | ケース | 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");
これらのどれも、私が望む方法で数値形式を提供しません。誰が私が間違っているのかアドバイスできますか? ポイントを逃したほど単純ですか?