【发布时间】:2009-06-01 10:24:52
【问题描述】:
我正在尝试将 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");
这些都没有给出我想要的数字格式。谁能告诉我哪里出错了?是不是太简单了,我没抓住重点?
【问题讨论】:
标签: c# asp.net format numbers tostring