#include <iostream>
using namespace std;
int main()
{
double a=1;
double b=0;
do
{
b=b+1/(a*(a+1));
a++;
}
while(a<100);
cout<<b;
}
#include <iostream>
using namespace std;
int main()
{
double a=1;
double b=0;
do
{
b=b+1/(a*(a+1));
a++;
}
while(a<100);
cout<<b;
}
这就是为什么数值类型有精度的问题了 计算机中没有分数 就像上面说的一样 它会一直除下去 直到到了精度再四舍五入 所以说你规定的数值类型不一样 的出的结果不一样 要记住计算机和人脑不一样 人脑是活的 而计算机是死的
!
这样好象永远跑出来的是近似值啊
CStr(Math.Round(Sum, 2))----------------------这个好象是故意向结果上靠
100个数以内除去和分子相同的外乘起来,连续加98次,再除以1到100的乘积...
(3*4*...*100+1*4*5*...*100+1*2*5*6*...*100+...)/(1*2*3..*100)
相当于通分
好象比较笨拙
应该是变量精度的问题哟!