我正在做所有答案显示,但我得到一个与日期时间字符串相关的错误:
将字符串转换为DateTime [不尝试]时,解析字符串以在将eacdh变量放入DateTime对象之前获取日期
根本没有尝试转换为日期 - 这是一个只加倍的字符串。
所有这些都失败并显示上面的确切错误消息,但这些列为此网站上的问题的答案:
Convert.ToDouble(text1.Text);
Convert.ToDouble(Convert.ToString(text1.Text));
Double.TryParse(text1.Text, out value);
Double.Parse(text1.Text).ToString();
Double.Parse(text1.Text, CultureInfo.InvariantCulture)
我在框中输入了什么让它抛出此错误?
[nothing]
a
x
b
c
我正在尝试将字符串转换为double;当我查看Text1.Text的属性it is listed as a string时,我认为在转换为十进制(woah)之前尝试将字符串转换为字符串是多余的。正如您所看到的,我仍然尝试以防万一。
In one of MS's examples,他们将此与小数一起使用:
CultureInfo culture;
decimal number = Decimal.Parse(text1.Text, culture.NumberFormat);
我在此使用了未分配的局部变量错误(culture
);此外,我没有在另一个其他例子中看到这个列出,所以这是解决它的一种非常特殊的方法,但也许这是实现这一目标的新方法?
一个不同的测试,其中一个是代码中的直接输入,另一个来自文本框:
/// No error:
Convert.ToDouble("0.85");
/// Error:
Convert.ToDouble(txt1.Text);
Convert.ToDouble(txt1.Text);
的堆栈跟踪:
在System.Number.ParseDouble(字符串值,NumberStyles选项, System.Convert.ToDouble(String value)的NumberFormatInfo numfmt) at BaseUtilityForm.Form1.btnDone_Click(Object sender,EventArgs e)in c:\ Users \ user \ Documents \ Visual Studio 2013 \ Projects \ Project \ Project \ Project.cs:89行 System.Windows.Forms.Control.OnClick(EventArgs e)at System.Windows.Forms.Button.OnClick(EventArgs e)at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)at at System.Windows.Forms.Control.WmMouseUp(Message& m,MouseButtons 按钮,Int32点击)at System.Windows.Forms.Control.WndProc(Message& m)at System.Windows.Forms.ButtonBase.WndProc(Message& m)
格式异常消息:
{"Input string was not in a correct format."}
答案 0 :(得分:1)
问题是收到的消息令人困惑,但根本原因是这些转换方法期望可以转换文本值。如果无法转换文本值,则会发生异常。
Convert.ToDouble(text1.Text);
Convert.ToDouble(Convert.ToString(text1.Text));
Double.Parse(text1.Text).ToString();
Double.Parse(text1.Text, CultureInfo.InvariantCulture)
避免例外:
double value;
if(Double.TryParse(text1.Text, out value)
{
[...do stuff with valid value here...]
}