2015-03-24 2 views
-3
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; 
    } 
} 

для начала my r = 0.1 после того, как я получу свой первый «x», я хочу вставить его в «r» для следующего шага. поэтому 'r' выглядит как предыдущее значение 'x' (r=x_n-1).C# Математический правильный синтаксис

Я знаю, как это сделать в MathCad, но понятия не имею, как это сделать на C#.

+2

Вы должны действительно использовать более значимые имена переменных. – Servy

+0

Вы уже выполняете 4 операции присваивания в коде, который у вас есть, так почему это другое? – Servy

+4

Почему вы не можете просто поставить «r = x» в нужное место в коде? – Russ

ответ

1

Похоже, что вам нужно просто что-то вроде:

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

Так в следующей итерации r будет держать «предыдущее» значение x.

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; 
} 
Смежные вопросы