使用加工解:S = 1 + 1 / 2-1 / 3 + 1/4 ... + 1 / 99-1 / 100

时间:2018-12-11 20:57:32

标签: java math processing

我想在处理过程中解决这个数学问题:

S=1+1/2-1/3+1/4...+1/99-1/100.

这是我的代码(不知道为什么它不起作用。我想它会在控制台中打印一个数字,但是它会产生一系列自然数):

float N = 0;
float T = 0;
int i = 1;

void draw() {
    for (i = 1; i < 100; i += 2) {
        N = N + 1 / i;
        T = T + 1 / (i + 1);
    }
    println(N - T);
}

2 个答案:

答案 0 :(得分:0)

1 / i是两个整数之间的除法表达式,其结果将是通过截断结果的分数部分而获得的int。由于您正在计算float,因此可以使用1f浮点文字来解决它

for (int i = 1; i < 100; i += 2) {
  N = N + 1f / i;
  T = T + 1f / (i + 1);
}

但是您的代码当前具有以下优势:

foo+bar

考虑i = 1,得到T = 0.5,然后从N中减去float sum = 1; for (int i = 2; i <= 100; i++) { float term = 1f / i; if (i % 2 != 0) { term *= -1; } sum += term; } System.out.println(sum); ,同时应根据问题陈述将其添加。一种解决方法是将代码编写为:

date_format
to_timestamp
unix_timestamp
from_utc_timestamp

答案 1 :(得分:0)

首先,draw()运行每帧。而是使用setup(),它只运行一次。

第二,将整数除以整数。继续,做println(1/i)看看魔术。

第三,在搜索结果之前,请务必先搜索一段时间。您将自己发现更多内容。 google和一点努力就可以解决;)

工作代码:

float N = 0;
float T = 0;
int i = 1;

void setup() {
    for (i = 1; i < 100; i += 2) {
        N = N + 1.0 / i;
        T = T + 1.0 / (i + 1);
    }
    println(N - T);
}