2

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");

これらのどれも、私が望む方法で数値形式を提供しません。誰が私が間違っているのかアドバイスできますか? ポイントを逃したほど単純ですか?

4

2 に答える 2

1

列のデータ型をDataTable間違って設定したように思えます。として明示的にしてみてくださいintDateTime現時点ではそうです)。

また、の仕事はデータDataTable保持することです。表示しないでください。sとして事前にフォーマットして保存することもできます (列が文字列であることを伝えstringている限り) - しかし、 として保存する場合は、表示を忘れてください。実行するとすぐに、ジョブは終了します。それがどのように見えるかは、 (または何でも)の仕事です。「N0」について教えください...intConvert.ToInt32DataGridView

于 2009-06-01T10:30:19.983 に答える
0

ToString("N"); のように単純な "N" を使用してみてください。

于 2009-06-01T10:33:18.917 に答える