我目前正在研究一个学校项目的计算器。 我需要一个指数函数,但不能弄清楚如何。我收到此错误:
参数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;
}
}
}
希望你们能帮忙。
答案 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());