我创建的计算器程序几乎完美地工作,除了Math.Sin()和Math.Log()似乎有一些我似乎无法深入到底的不准确之处.我会尝试尽可能多地提供详细信息.
Math.Sin()问题:
首先,这不是一个弧度问题(至少就我所知).数字以Math的形式输入Math.Sin().它适用于度和弧度的某些值,但不适用于180和pi等其他值.现在有些代码:
private void buttonSin_Click(object sender, EventArgs e)
{
if (radioDeg.Checked)
{
firstOperand = Math.PI/180*firstOperand;
}
firstOperand = Math.Sin(firstOperand);
secondOperand = 0;
displayScreen.Text = firstOperand.ToString();
clickCount = 0;
operationCount++;
}
Run Code Online (Sandbox Code Playgroud)
firstOperand是double,并且(与secondOperand一起)用于将要发生的后续计算.我认为代码的其他部分是不言自明的,但我很乐意在必要时详细说明.Math.Sin(Math.PI)= 1.224 ...而不应该是0.然而,Math.Sin(Math.PI/4)= 0.707 ......正如预期的那样.此外,这仅在pi作为Math.PI生成时.如果手动输入为3.14159,则Math.Sin()= 2.65 ...如果输入为3.1415926,我会得到Math.Sin()= 5.35 ...任何人都可以指出原因吗?
Math.Log()问题:
这部分几乎完美.连续应用该函数时发生唯一的错误.看看代码:
private void buttonLn_Click(object sender, EventArgs e)
{
firstOperand = Math.Log(firstOperand);
secondOperand = 0;
displayScreen.Text = firstOperand.ToString();
clickCount = 0;
operationCount++;
}
Run Code Online (Sandbox Code Playgroud)
Math.Log(Math.E)= 1应该如此,但是当此后立即按下ln按钮时,我得到一个值1.776 ...注意,如果手动输入2.718然后按下ln按钮两次继承,我得到-.0001 ...这更接近0的实际答案.
如果这些应该是单独的帖子,我很抱歉,但我认为这两个问题都可能与常量Math.PI和Math.E的处理方式有关.有什么想法吗?