结果都是1,你不觉得很诡异么?注意你把i定义为整形的,所以1/i的时候只有1/1的值是有效的。
追答这个因该是float的精度问题,改成double就好了吧
追问精度是怎样影响结果的,求解。
C++,float从1\/1加到1\/100000和1\/100000加到1\/1的值为什么不同?
void main(){ float sum1 = 0,sum2 = 0;int i;for(i=1;i<=100000;i++){ sum1=sum1+(1\/i);sum2=sum2+(1\/(100001-i));} printf("%f,%f\\n",sum1,sum2);} 我这个结果一样啊~~~
c语言1加到10000,用float型存储结果为什么会出错?
用double肯定没有问题。*\/
C++问题 从1到10000之间的数
我看不懂你想干什么 但是 你的程序进入死循环了 一直在do里面出不来 只有当i==0时才会跳出这个循环 所以程序执行不到printf这个语句 也就不会有输出
while循环语句1+1\/4+...1\/10000c语言?
int i = 1;double sum = 0.0;while (i <= 10000) { sum += 1.0 \/ i;i++;} printf("The sum is: %f", sum);return 0;} 在程序中,变量 i 表示分母,从 1 开始递增,直到 10000。变量 sum 初始值为 0,每次循环累加一个分数。当 i 的值达到 10000 时,循环结束,输出结果。
C++中double型数值计算结果为0为什么输出的不是0?
这是由于double类型的精度引起的。在C\/C++中,float和double类型,被称为浮点型。浮点型是C\/C++中用来存储实数的。而存储的值,并不是实际值,而是近似值。即,double类型和float类型存储的值均不是准确值,而是一个和准确值接近的值。这样,在计算中,就会有精度缺失的情况出现,运算越多,这个精度...
C++计算1~100000一共有多少个1
int count = 0;\/\/1的数量 for (int i = 1; i <= 100000; i++){ if (i \/ 100000 == 1) { count++; }\/\/十万位 if (i \/ 10000 == 1) { count++; }\/\/万位 if (i \/ 1000 == 1) { count++; }\/\/千位 if (i \/ 100 == 1) { count++; }\/\/百位 if (i \/ 10 ...
c\/c++ 一个问题...急...万分之急...
那么开始一共有100000000-2个素数,作者除去了1和100000000;for(int i=2; i<=10000; ++i)从2开始,到10000作为除数测试2~100000000的自然数是否能被整除,之所以到10000为止,是因为100000000以内的自然数能有的最大公约数不会超过10000,所以不必要测试10000以上的 if(p[i\/32]&(1<...
10000个1相加\/10000个1-1 1=?
10000个1相加\/10000个1-1 =10000\/10000-1 =1-1 =0
用c++,求求各位大佬了!设 s=1+1\/2+1\/3+...+1\/n,求与8最接近的s值及与...
public:MyMath(long maxN = 10000){ _n = 0;_sum = 0.0;_maxN = maxN;} ~MyMath() {} public:long getN() { return _n; } double getSum() { return _sum; } void calculate(double number){ double ltNumber = 0.0;double gtNumber = 0.0;while (1){ if (_n > _...
一的阶乘加到20的阶乘,哪里错了,请高手指点
long a[7]={0,0,0,0,0,0,1};long sum[7]={0,0,0,0,0,0,0};void jiecheng(int n){ int i,j,temp;for(i=0;i<6;i++) a[i]=0;a[6]=1;for(i=1;i<=n;i++){ for(j=6,temp=0;j>=0;j--){ a[j]*=i;a[j]+=temp;temp=0;if(a[j]>=10000){ temp=a...