C++:简单方程有问题吗?

0 c++ visual-c++

我在Windows XP上使用Visual C++ 6.0.我的代码如下:

# include "stdio.h"
void main () {
 int m,n;
 double sum=0;
 n=65536;
 sum=1.0/(n*n);
 printf("%.20lf",sum);
 return;
}
Run Code Online (Sandbox Code Playgroud)

我的代码输出是:

1.#INF0000000000000000
Run Code Online (Sandbox Code Playgroud)

为什么我得到错误答案?我怎样才能1/(65536*65536)正确计算?我期待着0.00000000023283064365386962890625.

谢谢你的帮助!

Vic*_*din 5

有整数溢出.你可以在乘法之前将int转换为double:

sum=1.0/(((double)n)*n);
Run Code Online (Sandbox Code Playgroud)