Ошибка при расчете - "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)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д