格式化数字字符串以添加逗号 - c#

时间:2018-01-22 15:39:48

标签: c# string formatting

我知道这个问题之前已被多次回答,但我确信我的代码是正确的但是没有正常工作。

string total = ds.Tables[0].Rows[0][0].ToString();
string test = string.Format("{0:N}", total);
lbl_totalValue.Text = test;

此代码并非像我们希望的那样将逗号添加到我的值中。

谁能明白为什么?

4 个答案:

答案 0 :(得分:6)

当你把

  string total = ds.Tables[0].Rows[0][0].ToString();

表示隐式G(“常规”)格式字符串

  string total = ds.Tables[0].Rows[0][0].ToString("G");

不要过早格式化

  var total = ds.Tables[0].Rows[0][0];         // Value from table
  string test = string.Format("{0:N}", total); // Format total with "N" format string

答案 1 :(得分:2)

您的代码正在尝试格式化字符串。如果DataTable包含数字,您可以将格式说明符传递给ToString(),例如

var test=ds.Tables[0].Rows[0][0].ToString("N");

或者将内容存储在本地变量中并使用String.Format

var total = ds.Tables[0].Rows[0][0];
string test = string.Format("{0:N}", total);

如果数据表包含字符串,则必须先将其解析为数字类型

答案 2 :(得分:1)

您必须使用数字类型string.Format而不是字符串。在这种情况下,变量total是一个字符串,它必须是一个数字。

答案 3 :(得分:1)

Strig.Format方法有8个重载。您正在使用此特定的:Format(String, Object),其中您传递String值作为第二个参数的参数。这是因为您使用字符串变量(total)来分配数据集中的值:

string total = ds.Tables[0].Rows[0][0].ToString();

此外,您使用.ToString()将其检索为String

如果您使用SQL Server作为ds数据集的数据源,并且您确定SQL data type,那么您可以将该值直接分配给具有相应C# type的变量。以不同的方式,SQL data types are mapped to C# data types。 如果您不确定C# data type的{​​{1}},那么您可以执行以下操作:

ds.Tables[0].Rows[0][0]

这样你就可以使用Object total = ds.Tables[0].Rows[0][0]; string test = string.Format("{0:N}", total); lbl_totalValue.Text = test; 的{​​{1}}重载。