我调试程序时出现此错误
未处理的类型' System.FormatException'发生在mscorlib.dll
public partial class Form1 : Form
{
int newCount;
int oldCount;
private void timerGetData_Tick(object sender, EventArgs e)
{
string u = webBrowser1.DocumentText;
u = u.Substring(u.IndexOf("<span id=\"PCoins\" class=\"Pcoins\""));
u = u.Substring(u.IndexOf(">") + 1);
u = u.Substring(0, u.IndexOf("</span>"));
textBoxCoins.Text = u;
newCount = Convert.ToDecimal(u);
if (newCount <= oldCount)
{
textBoxNewCount.Text = "WON";
oldCount = newCount;
}
else
{
oldCount = newCount;
textBoxNewCount.Text = "LOSS";
}
timerGetData.Stop();
}
}
调试停在 newCount = Convert.ToDecimal(u);
任何人都可以帮助我吗?
答案 0 :(得分:0)
显然u
没有可以转换为十进制的值。您必须跟踪代码以了解原因。
并将变量类型更改为十进制:
decimal newCount;
decimal oldCount;
无视
int newCount;
int oldCount;
答案 1 :(得分:0)
如果您确定要有一个表示小数有效值的字符串,那么您应该考虑机器的区域设置。如果您未指定CultureInfo参数,则转换要求字符串的格式正确。
如果您的字符串位于840.2449
之类的不变文化中,并且您的语言环境设置需要逗号作为小数分隔符,那么您需要指定文化信息
decimal newCount = 0;
string test = "840.2449";
newCount = Convert.ToDecimal(test, CultureInfo.InvariantCulture);
Console.WriteLine(newCount);
当然,您的实际代码永远不会编译,因为您无法将Convert.ToDecimal的返回值分配给integer类型的变量。在我的示例中,我已将变量更改为正确的数据类型。