C 中的基本 pi 搜索器,怎么了?

Basic pi searcher in C, whats wrong?

所以我尝试制作一个基于 Gregory-Leibniz 系列的基本圆周率搜索器。我的问题是 returns 3.0000,我不知道为什么...

这是基本程序:

int i = 1, j = 1;
double pi = 0;

for (i; i < 1000; i++)
{
    if(i % 2 != 0)
    {
        pi = pi + (4 / j);
    }
    else
    {
        pi = pi - (4 / j);
    }


    j = j + 2;
}

4/j 完全是整数数学运算,这意味着它会在相加之前向下舍入为整数。一些选项是 4.0 / j(double)4 / j.

MSDN 在 C floating-point constants 上有一篇文章解释了您应该使用的符号来确保文字值被视为 float 或 double。

j 的值为 1、3、5、7 等...

我问你:你认为4/14/34/54/7有什么价值?
准确解释为什么你这么想。

(提示:你可能错了)

你的除法是整数除法

(4 / j) // returns 0 when j is greater than 4

改用4.0进行浮点运算