在C#中转换问题

时间:2017-06-18 23:15:36

标签: c#

我一直收到一条错误消息,指出我无法将字符串转换为引用第39行的双字符。有人可以查看代码并让我知道我在哪里关闭吗?我觉得第25行应该列出变量" R。"

的双倍
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Present_Value
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        //Declare global variables. 
       /* double F = int.Parse(futureTextBox.Text);
        double R = int.Parse(interestTextBox.Text);
        double N = int.Parse(sitTextBox.Text);*/

        private double CalculateData(int F, int R, int N)
        {
            double P = F/(1 + R)*N;
            return P ;

        }



        private void button1_Click(object sender, EventArgs e)
        {

            int n = int.Parse(sitTextBox.Text);
            int f = int.Parse(futureTextBox.Text);
            int r = double.Parse(intTextBox.Text);

            presentValuelabel.Text = CalculateData(f,r,n).ToString();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void exitButton_Click(object sender, EventArgs e)
        {
            //Close this form.
                this.Close();
        }
    }
}

2 个答案:

答案 0 :(得分:1)

有两种编辑方式。

方法1)您应该编辑CalculateData函数。 int R => double R

private double CalculateData(int F, double R, int N)
{
    double P = F / (1 + R) * N;
    return P;

}
private void button1_Click(object sender, EventArgs e)
    {

        int n = int.Parse(sitTextBox.Text);
        int f = int.Parse(futureTextBox.Text);
        double r = double.Parse(intTextBox.Text);

        presentValuelabel.Text = CalculateData(f, r, n).ToString();
    }

方法2)您应该编辑button1_Click函数。 double.Parse(intTextBox.Text) => int.Parse(intTextBox.Text)

private void button1_Click(object sender, EventArgs e)
{

    int n = int.Parse(sitTextBox.Text);
    int f = int.Parse(futureTextBox.Text);
    int r = int.Parse(intTextBox.Text);

    presentValuelabel.Text = CalculateData(f, r, n).ToString();
}

我希望它会对你有所帮助。

答案 1 :(得分:0)

在处理用户输入时(来自文本框),您应该使用.TryParse()方法而不是.Parse()。我们不能相信用户......

此外,如果您的输入可能是实数,那么文化就是一个例子,例如, 3.4或3,4。