Ошибка при расчете - "cannot convert from 'method group' to 'double'" - C#
Формулировка задачи:
Здравствуйте!
Делала на c# программу, реализующую подсчет сложных процентов по периодам и вывод соответствующего графика.
Но при запуске возникает 2 ошибки:
1) The best overloaded method match for 'System.Math.Round(double, int)' has some invalid arguments
2) Argument '1': cannot convert from 'method group' to 'double'
Помогите, пожалуйста, разобраться
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public double d, p, n;
double sum;
public int k;
public Form1()
{
InitializeComponent();
textBox2.MaxLength = 2;
}
public static class FunctionSet
{
public static double Func1(double d, double p, double n)
{
return (d * Math.Pow((1 + (p / 100)), n));
}
}
public void button1_Click(object sender, EventArgs e)
{
try
{
double d = Convert.ToDouble(textBox1.Text);
double p = Convert.ToDouble(textBox2.Text);
double n = Convert.ToDouble(textBox3.Text);
double inter = Convert.ToDouble(textBox5.Text);
sum = (d * Math.Round(Math.Pow((1 + (p / 100)), n), 2));
textBox4.Text = Convert.ToString(sum);
textBox4.Text = Convert.ToString(sum); //преобразуем число в строку
}
catch (FormatException)
{
MessageBox.Show("Неверный ввод данных");
return;
}
if (textBox1.Text == "")
{
MessageBox.Show("Не введена сумма!");
}
if (textBox2.Text == "")
{
MessageBox.Show("Не введен процент!");
}
if (textBox3.Text == "")
{
MessageBox.Show("Не введено количество периодов!");
}
else
{
sum = Math.Round(FunctionSet.Func1, 4);
}
}
public delegate double Func(double x);
public double Raschet(Func k)
{
double sum = 0.0;
double d = Convert.ToDouble(textBox1.Text);
double p = Convert.ToDouble(textBox2.Text);
double n = Convert.ToDouble(textBox3.Text);
double inter = Convert.ToDouble(textBox5.Text);
double h;
h = n / inter; //шаг
for (int i = 1; i <= n; i++)
{
sum += d * Math.Round(Math.Pow((1 + (p / 100)), n), 2);
}
sum += h;
return sum;
}
private void button2_Click(object sender, EventArgs e)
{
//this.Stroi(FunctionSet.Func1);
}
public void Stroi(Func z)
{
Graphics g = graphWind.CreateGraphics();
g.Clear(Color.White);
Pen myPen = new Pen(Color.Black);
int MaxX = graphWind.Width;
int MaxY = graphWind.Height;
//double d = Convert.ToDouble(textBox1.Text);
//double p = Convert.ToDouble(textBox2.Text);
//double n = Convert.ToDouble(textBox3.Text);
double inter = Convert.ToDouble(textBox5.Text);
double h = n / inter;
int k = System.Convert.ToInt32(inter);
double[] Xx = new double[k + 1];
double[] Y1 = new double[k + 1];
Xx[0] = 1;
for (int i = 0; i < k - 1; i++)
{
Xx[i + 1] = Xx[i] + h;
}
Y1[0] = d;
for (int i = 0; i < k - 1; i++)
{
Y1[i] = Xx[i];
}
double[] X = new double[k + 1];
double[] Y = new double[k + 1];
double Ymax = Y1[0];
double Ymin = Y1[0];
g.DrawLine(myPen, 0, 0, MaxX, 0);
g.DrawLine(myPen, 0, 0, 0, MaxY);
for (int i = 0; i < k; i++)
{
if (Ymax < Y1[i])
{
Ymax = Y1[i];
}
if (Ymin > Y1[i])
{
Ymin = Y1[i];
}
}
// for (int i = 0; i < k; i++)
// {
// X[i] = MaxX * (Xx[i] - a) / (b - a);
// Y[i] = MaxX - MaxY * ((Y1[i] - Ymin) / (Ymax - Ymin));
// }
for (int i = 1; i < k - 1; i++)
{
g.DrawLine(myPen, (float)(X[i]), (float)(Y[i]), (float)(X[i + 1]), (float)(Y[i + 1]));
g.DrawRectangle(myPen, (float)(X[i - 1]), (float)(Y[i - 1]), (float)(h), (float)(MaxY - Y[i]));
}
g.Dispose();
}
}
}Решение задачи: «Ошибка при расчете - "cannot convert from 'method group' to 'double'"»
textual
Листинг программы
Math.Pow((1 + (p / 100)), n)