我想在处理过程中解决这个数学问题:
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);
}
答案 0 :(得分:0)
1 / i
是两个整数之间的除法表达式,其结果将是通过截断结果的分数部分而获得的int
。由于您正在计算float
,因此可以使用1f
浮点文字来解决它
for (int i = 1; i < 100; i += 2) {
N = N + 1f / i;
T = T + 1f / (i + 1);
}
但是您的代码当前具有以下优势:
考虑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);
}