我对java相当陌生,但已经用它做了一些android编程。现在我想用
for (int i=1; i<=n; i++) { sum = sum + (float) 1/(i*i); }
无穷级数的和是有限的,但超过大约50000项,和就是“无穷大”。只要我不让它去太多的条款,虽然,系列似乎是收敛的预期。这里的数据结构有问题吗,或者我遗漏了什么。
j1dl9f461#
一个问题是 i * i 会发生整数溢出。特别是,当 i = 2^16 (即65536), i*i = 2^32 溢出到0。以及 1f / 0 是 +Infinity 在 java 。如果你申报 i 作为一个 float 你会更接近你所期望的。如果你想要更好的精度,你可以用双精度。
i * i
i = 2^16
i*i = 2^32
1f / 0
+Infinity
i
float
1条答案
按热度按时间j1dl9f461#
一个问题是
i * i
会发生整数溢出。特别是,当
i = 2^16
(即65536),i*i = 2^32
溢出到0。以及1f / 0
是+Infinity
在 java 。如果你申报
i
作为一个float
你会更接近你所期望的。如果你想要更好的精度,你可以用双精度。