C# 数学正确语法
C# Math correct syntax
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;
}
}
在我得到第一个 'x' 之后,开始我的 r=0.1,我想将它插入 'r' 以进行下一步。所以 'r' 看起来像以前的值 'x' (r=x_n-1
).
我知道如何在 MathCad 中实现,但不知道如何在 C# 中实现。
看来您只需要这样的东西:
if (x > Math.Exp(Math.Log(2) * (-bb)))
{
x = r - Math.Exp(Math.Log(2) * (-bb));
xbb = 1;
r = x;
}
因此在下一次迭代中 r
将保持 x
的 "previous" 值。
看起来您实际上只是在计算 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;
}
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;
}
}
在我得到第一个 'x' 之后,开始我的 r=0.1,我想将它插入 'r' 以进行下一步。所以 'r' 看起来像以前的值 'x' (r=x_n-1
).
我知道如何在 MathCad 中实现,但不知道如何在 C# 中实现。
看来您只需要这样的东西:
if (x > Math.Exp(Math.Log(2) * (-bb)))
{
x = r - Math.Exp(Math.Log(2) * (-bb));
xbb = 1;
r = x;
}
因此在下一次迭代中 r
将保持 x
的 "previous" 值。
看起来您实际上只是在计算 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;
}