古怪的方面的ToString()的自定义数字格式
题
我试图数字形式转换123456 123456我发现很容易够通过使用.NET ToString()方法用的N0自定义格式。
然而,在数据我正在奇怪格式,而采用这种方法。一例
在这种情况下我生成一个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并将其移置到另一个数据表)的
使用上述格式我现在得到以下数据返回。
-------------------------------------------------------------------------- | 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
(或其他)的工作;告诉的是的有关 “NO” ......
其他提示
尝试使用简单的 “N” 为的ToString( “N”);
不隶属于 StackOverflow