我正在尝试将格式为 123456 的数字转换为 123,456,我发现使用自定义格式为 N0 的 .NET ToString() 方法很容易。
然而,在一种数据情况下,我在使用这种方法时得到了奇怪的格式。
在这种情况下,我正在为我的输入表动态生成一个 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 | 0937 年 1 月 3 日 | 01/03/0207 | 0173 年 1 月 4 日 | 01/04/0265 | -------------------------------------------------- ----------------------
然后我尝试使用小数点后一位:
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");
这些都没有给出我想要的数字格式。谁能告诉我哪里出错了?是不是很简单,以至于我错过了重点?