C#计算器exponet函数。怎么样?

时间:2017-06-01 13:21:06

标签: c#

我目前正在研究一个学校项目的计算器。 我需要一个指数函数,但不能弄清楚如何。我收到此错误:

  

参数1:无法转换为' double?'到'加倍'

我的一些代码。

namespace Lommeregner
{
    public partial class Lommeregner : Form
    {
        double? firstpressednumber;
        double sum;
        double? secondpressednumber = null;
        string operationclicked;

        onscreenShower _onscreenShower = new onscreenShower();

我的指数:

private void btn_exponent_Click(object sender, EventArgs e)
        {
            screen_text.Text = _onscreenShower.DisplayOnScreen(Math.Exp(secondpressednumber).ToString(), screen_text.Text.ToString());
        }

我的平等代码。

private void btn_equal_Click(object sender, EventArgs e)
        {
            if(screen_text.ToString().Length>0)
            {
                switch(operationclicked)
                {
                    case "+":
                        secondpressednumber = double.Parse(screen_text.Text.ToString());
                        sum = double.Parse((firstpressednumber + secondpressednumber).ToString());
                        firstpressednumber = double.Parse(screen_text.Text.ToString());

                        screen_text.Text = sum.ToString();
                        break;

                    case "-":
                        secondpressednumber = double.Parse(screen_text.Text.ToString());
                        sum = double.Parse((firstpressednumber - secondpressednumber).ToString());
                        firstpressednumber = double.Parse(screen_text.Text.ToString());

                        screen_text.Text = sum.ToString();
                        break;

                    case "*":
                        secondpressednumber = double.Parse(screen_text.Text.ToString());
                        sum = double.Parse((firstpressednumber * secondpressednumber).ToString());
                        firstpressednumber = double.Parse(screen_text.Text.ToString());

                        screen_text.Text = sum.ToString();
                        break;

                    case "/":
                        secondpressednumber = double.Parse(screen_text.Text.ToString());
                        sum = double.Parse((firstpressednumber / secondpressednumber).ToString());
                        firstpressednumber = double.Parse(screen_text.Text.ToString());

                        screen_text.Text = sum.ToString();
                        break;
                }
            }
        }

希望你们能帮忙。

2 个答案:

答案 0 :(得分:2)

你的双重可以为空

如果要访问其值,请尝试doubleVarName.Value

您可以使用doubleVarName.HasValue检查它是否有值,然后将值传递给您的方法

答案 1 :(得分:2)

Math.Exp期望double作为参数 - 您(尝试)将其传递给可以为空的双(double?)。

至少你需要.Value,但你几乎肯定应该首先检查一个值:

if(!secondpressednumber.HasValue)
   throw new InvalidOperationException("No value");
screen_text.Text = _onscreenShower.DisplayOnScreen(Math.Exp(secondpressednumber.Value).ToString(), screen_text.Text.ToString());