减去两个不同的数据类型号

时间:2013-07-22 15:35:53

标签: c# math textbox type-conversion

我正在尝试获取textBox19数字(9,2)的结果,例如 17050.00 ,并在textBox20中减去它的值,其中有之类的数字120 。所以 17050.00 - 120

我试图做到这一点:

textBox21.Text = (Convert.ToDouble(textBox19.Text) - 
Convert.ToDouble(textBox20.Text)).ToString();

应该这样做:它应该减去textBox19 - textBox20。并在textBox21中显示结果。

确实: 但是当我在textBox19中调试仍然是 17050.00 而在textBox20 120 。 我想在textBox21.Text

中显示结果

这行代码给了我这个例外:Input string was not in correct format.当我将textBox19中的值从 17050.00 更改为* 17050 *时,程序会继续并且不会掉线。

请问我在哪里犯错?

2 个答案:

答案 0 :(得分:1)

首先,这两个值看起来不应该存储在double中。它们看起来像货币值,应该存储为小数。

将代码重写为以下内容:

decimal textBox19Value; //Needs a better name
decimal textBox20Value; //Needs a better name

if (!decimal.TryParse(textBox19.Text, out textBox19Value))
{
    // textBox19 doesn't contain a valid decimal
    // present error to user and return
}

if (!decimal.TryParse(textBox20.Text, out textBox20Value))
{
    // textBox20 doesn't contain a valid decimal
    // present error to user and return
}

decimal result = textBox19Value + textBox20Value;

textBox21.Text = result;

答案 1 :(得分:1)

@Tobsey几乎提供了我采取的方法,但你的问题有些模糊,所以我要投入2美分。

我不知道你在设置textBox21的值时做了什么,例如点击一个按钮等,但我只是要使用TextChanged事件。

在我的 FormName .Designer.cs中,我在InitializeComponent()中有以下几行:

this.TextBox19.TextChanged += new System.EventHandler(this.ChangeValue);
this.TextBox20.TextChanged += new System.EventHandler(this.ChangeValue);

在实际的 FormName .cs文件中,我有以下内容:

private void ChangeValue(object sender, EventArgs e)
{
    double text20, text19;
    if (
        !double.TryParse(TextBox19.Text, out text19) ||
        !double.TryParse(TextBox20.Text, out text20)
    )
    {
        TextBox21.Text = "Can't calculate.";
        return;
    }

    TextBox21.Text = ( text19 - text20 ).ToString();
}

至于你获得FormatException Input string was not in correct format.的原因,我无法告诉你。也许存在本地化问题,在这种情况下,您将不得不修改上面的TryParse以使用正确的culture格式以及ToString()。在MSDN上查找“格式化类型”,因为我只能发布2个链接。当我在测试中尝试17050.00和17050时,这是首先想到的,并且没有任何问题。