C#Math正确的语法

时间:2015-03-24 14:46:13

标签: c# math

for (int bb = 1; bb <= 24; bb++)
{
    if (x > Math.Exp(Math.Log(2) * (-bb)))
    {
        x = r - Math.Exp(Math.Log(2) * (-bb));
        xbb = 1;
    }
    else
    {
       xbb = 0;
    }
}

开始我的r = 0.1后,我得到了我的第一个&#39; x&#39;,我想把它插入&#39; r&#39;为下一步。所以&#39; r&#39;看起来像以前的&#39; x&#39; (r=x_n-1)。

我知道如何在MathCad中执行此操作,但不知道如何在C#中执行此操作。

2 个答案:

答案 0 :(得分:1)

看起来你只需要:

if (x > Math.Exp(Math.Log(2) * (-bb)))
{
    x = r - Math.Exp(Math.Log(2) * (-bb));
    xbb = 1;
    r = x;
}

因此,在下一次迭代中,r将保留x的“上一个”值。

答案 1 :(得分:1)

看起来你实际上只是计算x的二进制表示。 Math.Exp( Math.Log(2) * -bb )只是写Math.Pow(2, -bb)是一种相当冗长的方式。你也不需要那样计算它。以下是我的工作方式(假设您的变量为double):

double x = r;
double pow = 0.5;
for( int i = 0; i < 24; ++i )
{
    int xbb = 0;
    if( x > pow )
    {
        x -= pow;
        xbb = 1;
    }

    pow /= 2;
}