将Text1.Text转换为加倍

时间:2017-01-26 20:14:24

标签: c# string double

我正在做所有答案显示,但我得到一个与日期时间字符串相关的错误:

  

将字符串转换为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."}

1 个答案:

答案 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...]
}