C# “错误”;无法将类型字符串隐式转换为十进制;

C# “错误”;无法将类型字符串隐式转换为十进制;,c#,C#,我正在尝试以货币形式显示我的值。我有一个代码正在使用,该代码应将字符串转换为十进制。我收到一个错误,它无法将字符串转换为十进制。错误在我有string.format的代码行 string[] x = new string[dt.Rows.Count]; decimal[] y = new decimal[dt.Rows.Count]; for (int i = 0; i<dt.Rows.Count; i++) { x[i] = dt.Rows[i][0].ToString();

我正在尝试以货币形式显示我的值。我有一个代码正在使用,该代码应将字符串转换为十进制。我收到一个错误,它无法将字符串转换为十进制。错误在我有string.format的代码行

string[] x = new string[dt.Rows.Count];

decimal[] y = new decimal[dt.Rows.Count];

for (int i = 0; i<dt.Rows.Count; i++)
{
    x[i] = dt.Rows[i][0].ToString();
    y[i] = string.Format("{0:##,##0.00}",Convert.ToInt32(dt.Rows[i][1]));
}
string[]x=新字符串[dt.Rows.Count];
十进制[]y=新的十进制[dt.Rows.Count];

对于(inti=0;i您尝试将字符串放入十进制,这是错误的。 您应该使用默认的货币格式化程序并更改字符串中的小数:

string[] x = new string[dt.Rows.Count];

string[] y = new string[dt.Rows.Count];

for (int i = 0; i<dt.Rows.Count; i++)
{
   x[i] = dt.Rows[i][0].ToString();
   y[i] = int.Parse(dt.Rows[i][1]).ToString("C2");
}
string[]x=新字符串[dt.Rows.Count];
string[]y=新字符串[dt.Rows.Count];
对于(int i=0;i只需更改:

decimal[] y = new decimal[dt.Rows.Count];
致:

并使用以下转换:

y[i] = string.Format("{0:##,##0.00}", dt.Rows[i][1].ToString());
或者,如果您不想更改
y
的类型:

y[i] = Decimal.Parse(dt.Rows[i][1]);

使用最后一种方法,如果您需要更多的控制来处理当前的数字格式,请使用此版本的
Decimal.Parse

string.format
返回字符串,但您正在分配给
Decimal
数组。您需要使用
Convert.ToDecimal
Decimal.Parse
from string value或d直接将
dt.Rows[i][j]
插入为十进制。@TetsuyaYamamoto,谢谢,我已经将其更改为y[i]=Convert.ToDecimal({0:#####,0.00}),Convert.ToInt32(dt.Rows[i][1]);但是现在我从Convert.ToInt32得到了这个错误,“无法从int转换为system.IFormat derprovider为什么不仅仅是
string.Format({0:##,0#“,dt.Rows[i][1].ToString())
?如果该列包含十进制值,则在转换为
int
时将失去精度。如果要直接进行十进制转换,只需执行
Convert.ToDecimal(dt.Rows[i][1])
。我已根据此字符串[]x=新字符串[dt Rows.Count];字符串[]y=新字符串[dt.Rows.Count];//十进制[]y=新十进制[dt.Rows.Count];for(int i=0;i哪行需要字符串[]?如果是条形图,则无法设置值的格式,只需使用不带货币格式的十进制。我希望这些值是这样的;我希望它们不是6200,而是6200.00,我已按照您的建议进行了更改,但现在在这行代码BarChart1.Series.Add(新的AjaxControlToolkit.BarChartSeries{Data=y})中出现错误;错误是Data=y,表示“无法将类型'string[]”隐式转换为'decimal[]”,这就是我使用Data=y的地方
y[i] = Decimal.Parse(dt.Rows[i][1]);