英文:
I can't imagine what the code should be to solve these kinds of problems
问题
Given the limit of changing the value of variables, calculate the function according to the formula.
此函数的难度略高,之前我制作了一个普通函数,无法想象复杂函数的本质。
class Program
{
static void Main(string[] args)
{
double x <= 1.4;
Console.WriteLine("Enter the value of x:");
double x = Convert.ToDouble(Console.ReadLine());
double result = Math.sqr(x) - (7 / x);
double result2 = a * Math.pow(3, x) + 7 * Math.Sqrt(x);
double result3 = Math.log10(x + 7);
Console.WriteLine("The result of the function is:");
}
}
英文:
Given the limit of changing the value of variables, calculate the function according to the formula.
enter image description here
This function is a little more difficult to imagine, before that I made a regular function and I can not imagine the essence of complex functions.
class Program
{
static void Main(string[] args)
{
double x <= 1.4;
Console.WriteLine("Enter the value of x:");
double x = Convert.ToDouble(Console.ReadLine());
double result = Math.sqr(x)-(7 / x);
double result2 = a * Math.pow(3, x) + 7 * Math.Sqrt(x);
double result3 = Math.log10(x + 7);
Console.WriteLine("The result of the function is: ");
}
}
答案1
得分: 3
你可能应该为这个函数创建一个方法,如下所示:
public double f(double x)
{
if (x < 0.7 || x > 2)
throw new ArgumentOutOfRangeException(...);
if (x < 1.4)
return ...
else if (x == 1.4)
return ...
else
return ...
}
然后,你可以从你的 Main()
方法中调用这个方法,在这个方法中,你可以从用户输入中获取 x
的值,就像你已经在做的那样,然后调用 f(x)
来计算结果。
不过有一个问题。浮点数只能以近似方式表示。例如,值 1.4
实际上可能被存储为 1.399999999998...
或 1.40000000000013...
,所以 x == 1.4
的比较并不是真正正确的。
通常,浮点值与某个区间进行比较,类似于 Math.Abs(x - 1.4) < 1E-15
。
另一个选项是使用 decimal
类型(参见 https://stackoverflow.com/questions/618535/difference-between-decimal-float-and-double-in-net/618596#618596)。
英文:
Probably you should create a method for this function like:
public double f(double x)
{
if (x < 0.7 || x > 2)
throw new ArgumentOutOfRangeException(...);
if (x < 1.4)
return ...
else if (x == 1.4)
return ...
else
return ...
}
And then you can call this method from your Main()
method, where you can get the value of x
from user input, as you already do, and call f(x)
to calculate the result.
There is an issue though. Floating point numbers are represented only approximately. E.g. value 1.4
can be actually stored as 1.399999999998...
or 1.40000000000013...
, so x == 1.4
comparison is not really correct.
Usually floating point values are checked against some interval, something like Math.Abs(x - 1.4) < 1E-15
.
Another option is to use decimal
type (see https://stackoverflow.com/questions/618535/difference-between-decimal-float-and-double-in-net/618596#618596)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论