如何计算c#中指定数量项的总和?

如何计算c#中指定数量项的总和?,c#,.net,math,C#,.net,Math,我想计算c#中指定数量项的总和,例如 (将100替换为我将计算的项数) 该值等于(1/2)+(1/4)+(1/8)+(1/16)+…+(1/2^100) 我想使用一个while循环,将1/2^x与1-100之间的x相加,然后将它们相加,我知道如何计算每个项,但如何在不明确声明100个变量的情况下将每个项相加 谢谢你的支持 (我不需要整个程序,只需要一个while循环类。) 不,我认为双精度已经足够了。我正在将此应用于其他算术序列。我想这就是您要寻找的 var upperbounds = 10

我想计算c#中指定数量项的总和,例如

(将100替换为我将计算的项数)

该值等于(1/2)+(1/4)+(1/8)+(1/16)+…+(1/2^100)

我想使用一个while循环,将1/2^x与1-100之间的x相加,然后将它们相加,我知道如何计算每个项,但如何在不明确声明100个变量的情况下将每个项相加

谢谢你的支持

(我不需要整个程序,只需要一个while循环类。)


不,我认为双精度已经足够了。我正在将此应用于其他算术序列。

我想这就是您要寻找的

 var upperbounds = 100;
    var sum = 0;
    for (int i = 1;i <= upperbounds ; i++ )
    {
      sum += 1/Math.Pow(2, i);
    }
var上限=100;
var总和=0;

对于(inti=1;i我想这就是你想要的

 var upperbounds = 100;
    var sum = 0;
    for (int i = 1;i <= upperbounds ; i++ )
    {
      sum += 1/Math.Pow(2, i);
    }
var上限=100;
var总和=0;

对于(int i=1;i您可以使用LINQ执行此操作:

int upper = 100;
var items = Enumerable.Range(1, upper);

double total = items.Select(i => 1.0 / Math.Pow(2.0, i)).Sum();

您可以使用LINQ执行此操作:

int upper = 100;
var items = Enumerable.Range(1, upper);

double total = items.Select(i => 1.0 / Math.Pow(2.0, i)).Sum();

我知道你说过你不需要整个程序,但它很短,很难不做

public double doSummation(int maxPower) {
    double sum = 0;
    for (int i = 1; i <= maxPower; i++) {
        sum += Math.pow(2, i * -1); // 2^(-1) + 2^(-2) + 2^(-3) + ... + 2^(-1 * maxPower)
    }
    return sum;
}

我知道你说过你不需要整个程序,但它很短,很难不做

public double doSummation(int maxPower) {
    double sum = 0;
    for (int i = 1; i <= maxPower; i++) {
        sum += Math.pow(2, i * -1); // 2^(-1) + 2^(-2) + 2^(-3) + ... + 2^(-1 * maxPower)
    }
    return sum;
}

基于Jonathan的回答,以下是我完成的代码(用于任意数学):

使用系统;
使用W3b.Sine;
名称空间求和
{
公共课程
{
静态BigNum doSummation(int maxPower)
{
BigNum和=0;

对于(inti=1;i基于Jonathan的答案,以下是我完成的代码(用于任意数学):

使用系统;
使用W3b.Sine;
名称空间求和
{
公共课程
{
静态BigNum doSummation(int maxPower)
{
BigNum和=0;

对于(int i=1;i好的,你的方程∑[1/(2^n)]可以重写为1-(2^(-n)),所以你可以用一行:
Double x=1-(2^-n)
。但我想你想要的是更可重用的东西。:-)事实上,我刚刚试过,在你达到100个术语之前,你会遇到舍入错误。除非你使用专门的数学软件,否则你不会得到任何精确的答案。
十进制可能有足够的精度,我想。它是128位。实际上,划掉它——有效位只有96位。
,你的方程∑[1/(2^n)]可以重写为1-(2^(-n)),所以你可以用一行:
Double x=1-(2^-n)
。但我想你想要的是更可重用的东西。:-)事实上,我刚刚试过,在你达到100个术语之前,你会遇到舍入错误。除非你使用专门的数学软件,否则你不会得到任何精确的答案。
十进制可能有足够的精度,我想。它是128位。实际上,划掉它——有效位只有96位。:PThanks!这个成功了。我现在正在调整它以适应我的Chudnovsky算法。谢谢!这个成功了。我现在正在调整它以适应我的Chudnovsky算法。事实上,这个也有效。我将看看哪一个更容易应用。谢谢!事实上,这也有效。我将看看哪一个更容易应用。谢谢!