Созданная мною программа калькулятора работает почти идеально, за исключением того, что Math.Sin () и Math.Log (), похоже, имеют некоторые неточности, от которых я не могу до конца разобраться.Я постараюсь дать как можно больше подробностей.
Math.Sin () Проблема:
Во-первых, это НЕ проблема радиан (по крайней мере, насколькоЯ могу сказать).Числа передаются в Math.Sin () как двойные.Он работает для некоторых значений в градусах и радианах, но не для других, например, 180 и пи соответственно.Теперь для некоторого кода:
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++;
}
firstOperand является двойным и (вместе со secondOperand) используется для последующих вычислений, которые будут иметь место.Я думаю, что другие части кода говорят сами за себя, но я буду рад разработать в случае необходимости.Math.Sin (Math.PI) = 1,224 ... вместо 0, как и должно быть.Однако Math.Sin (Math.PI / 4) = 0,707 ... как и ожидалось.Кроме того, это только когда пи генерируется как 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++;
}
Math.Log (Math.E) = 1, как и должно быть, но когда сразу после этого нажимается кнопка ln, я получаю значение 1.776 ... Примечаниечто если вручную ввести 2.718, а затем дважды нажать кнопку ln подряд, я получу -.0001 ... что намного ближе к фактическому ответу 0.
Извините, если этобыть отдельными постами, но я думал, что обе проблемы могут касаться того, как обрабатываются константы Math.PI и Math.E.Есть мысли?