Java为有限和提供无穷大

jdo*_*ods 1 java math for-loop

我是Java的新手,但是已经用它做了一些Android编程.

现在我想用一个系列来总结

for (int i=1; i<=n; i++)
    {
        sum = sum + (float) 1/(i*i);
    }
Run Code Online (Sandbox Code Playgroud)

无限级数和是有限的,但超过大约50,000个左右,总和就是"无穷大".只要我不放过太多的条款,这个系列看起来就像预期的那样趋同.

这里的数据结构是否存在问题,或者我缺少什么.

ass*_*ias 6

一个问题是i * i受整数溢出的影响.

特别是当i = 2^16(即65536)i*i = 2^32溢出为0.而结果1f / 0+Infinity在Java中.

如果你声明ifloat,你会得到更接近你所期望的.如果你想要更好的精度,你可以使用双倍.