【发布时间】:2019-06-24 09:51:44
【问题描述】:
我正在尝试利用 c# 中的 Math.Cos() 函数来打印从 0 到 2pi 的一系列值,增加 0.1pi,因此迭代 20 次。问题是我无法在 for 循环执行时更改 x 值。
public void Cos()
{
double x = 0;
double a = Math.PI * x;
double b = Math.Cos(a);
for (int i = 0; i < 21; i++)
{
Console.WriteLine("Cos({0})pi = {1}", x, b);
x += .1;
}
}
当我将结果打印到控制台时,它只记住 x = 0 时的 cos 值。所以对于 Cos(.1)pi、Cos(.2)pi,我只得到 1、20 次结果,等等……
【问题讨论】:
-
it only remembers the value of cos at x = 0因为你在b初始化之后就再也不会计算了。 -
将
a和b的定义放入循环中。需要为x的每个新值重新计算它们。 -
更一般地说,“双 b = Math.Cos(a);”不是说“当我问
b是什么时,计算a的余弦”,它的意思是“计算a的余弦现在,当我问b是什么时,告诉我你计算的数字”。 -
阅读前面带有“立即”一词的每个陈述。所以“double x = a + b + c”意味着“立即将 a + b + c 的值的两倍存储到变量 x 中”。显然,您是在最上面做的,但在您“立即将值添加到 x 0.1”的 x += .1 行之后再也不会这样做了。您必须重新计算 a 和 b 才能获得您想要的值。
-
我明白你在说什么。谢谢。
标签: c# for-loop math-functions