我试图数字形式转换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它。你可以存储它预格式化为strings,我想(只要你的告诉的它的列是字符串) - 但如果你把它作为int,那就算了显示;只要您运行Convert.ToInt32你的工作就结束了。它是如何出现的是DataGridView(或其他)的工作;告诉的的有关 “NO” ......

其他提示

尝试使用简单的 “N” 为的ToString( “N”);

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top