如何计算c#中指定数量项的总和?
我想计算c#中指定数量项的总和,例如 (将100替换为我将计算的项数) 该值等于(1/2)+(1/4)+(1/8)+(1/16)+…+(1/2^100) 我想使用一个while循环,将1/2^x与1-100之间的x相加,然后将它们相加,我知道如何计算每个项,但如何在不明确声明100个变量的情况下将每个项相加 谢谢你的支持 (我不需要整个程序,只需要一个while循环类。)如何计算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
不,我认为双精度已经足够了。我正在将此应用于其他算术序列。我想这就是您要寻找的
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算法。事实上,这个也有效。我将看看哪一个更容易应用。谢谢!事实上,这也有效。我将看看哪一个更容易应用。谢谢!