33,311
社区成员
发帖
与我相关
我的任务
分享
void fun()
//对于float,找到使1/n和式收敛的N
{
volatile long i=0L;
volatile float sum=0.0;
volatile float temp=1.0;
for(i=1;sum!=temp;i++)
{
temp=sum;
sum+=float(1.0/i);
if(i>=2147483647)//上溢
break;
}
cout<<"setprecision(10)"<<"求和结果为:"<<sum<<endl;
cout<<"和式的最后一项N= "<<i<<endl;
cout<<"1/N= "<<1.0/i<<endl;
}
#include "stdio.h"
#define TEST_TYPE double
#define FLA_COMPARE(a, b) (((a-b)>-0.00000001 && (a-b)<0.00000001) ? 1 : 0)
int main()
{
long i;
TEST_TYPE sum = 0.0;
TEST_TYPE temp = 1.0;
for(i = 1; !FLA_COMPARE(sum, temp) && (i < 0x7fffffff); i++)
{
temp = sum;
sum += float(1.0/i);
}
printf("\r\nsizeof(TEST_TYPE):%d sum:%lf, i:%08x", sizeof(TEST_TYPE), (double)sum, i);
getchar();
return 0;
}
#include "stdio.h"
#define TEST_TYPE double
int main()
{
long i;
TEST_TYPE sum = 0.0;
TEST_TYPE temp = 1.0;
for(i = 1; sum != temp && (i < 0x7fffffff); i++)
{
temp = sum;
sum += float(1.0/i);
}
printf("\r\nsizeof(TEST_TYPE):%d sum:%lf, i:%08x", sizeof(TEST_TYPE), (double)sum, i);
getchar();
return 0;
}