Линейные алгоритмы. В чём ошибка? C#
Код должен на основе входных данный x=3.981x10^-2 y=–1.625x10^3 z== 0.512 находить a. a должен получится
a = 1.26185. Но у меня результат a= 2,906636. Подскажите где в коде ошибка. Я думаю напутал где-то в Вычислении арифметических выражений. Само выражение:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Rab1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
textBox1.Text = "3,981e-2";
textBox2.Text = "-1,625e3";
textBox3.Text = "0,512";
}
private void button1_Click(object sender, EventArgs e)
{
// Считывание значения X
double x = double.Parse(textBox1.Text);
// Вывод значения X в окно
textBox4.Text += Environment.NewLine +
"X = " + x.ToString();
// Считывание значения Y
double y = double.Parse(textBox2.Text);
// Вывод значения Y в окно
textBox4.Text += Environment.NewLine +
"Y = " + y.ToString();
// Считывание значения Z
double z = double.Parse(textBox3.Text);
// Вывод значения Z в окно
textBox4.Text += Environment.NewLine +
"Z = " + z.ToString();
// Вычисляем арифметическое выражение
double a = Math.Pow(2, -x);
double b = Math.Sqrt(x + Math.Pow(Math.Abs(y), 0.25));
double c = Math.Pow(Math.Exp(x - 1 / Math.Sin(z)), 1 / 3);
double u = a * b * c;
// Выводим результат в окно
textBox4.Text += Environment.NewLine +
"Результат a= " + u.ToString();
}
}
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Поскольку неизвестно, в какой локали вы работаете, запись с десятичной запятой
"3,981e2"
может быть как верной, так и неверной (вроде бы так... C# я знаю на уровне чайника, могу ошибаться). Проверьте, что входные значения после преобразования у вас верные, если нет - исправьте запятые на точки.
И еще - деление 1/3 - целочисленное, результат равен 0. Но поскольку
я бы просто заменил вычисление c на
double c = Math.Exp((x - 1 / Math.Sin(z))/3);
