簡體   English   中英

當我得到 (j>1) 作為條件時,為什么我得到 1 作為答案?

[英]Why do I get 1 as an answer when I got (j>1) as a condition?

#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>

double rand_double() {
    return ( ((double)rand())/ ((double)RAND_MAX) );
}

int main(){
    double i=rand_double();
    double j;
    do {
        i=(i*0.5);
        j=(1+i);
        printf("%lf\n", j);
    }
    while(j>1);
    return(0);
}

原因是您沒有顯示足夠的小數位。

所以1.000000是 output ,例如,該值為1.00000000000000022 ,即> 1

請嘗試更多小數位:

printf("%.17lf\n", j);

默認位數通常為double類型適用於大約 16-17 位有效數字。 修改程序 output:

1.00062562944425792
1.00031281472212896
1.00015640736106448
1.00007820368053224
1.00003910184026612
1.00001955092013306
1.00000977546006653
1.00000488773003338
1.00000244386501658
1.00000122193250829
1.00000061096625426
1.00000030548312702
1.00000015274156362
1.00000007637078170
1.00000003818539085
1.00000001909269542
1.00000000954634771
1.00000000477317386
1.00000000238658693
1.00000000119329346
1.00000000059664673
1.00000000029832337
1.00000000014916179
1.00000000007458079
1.00000000003729039
1.00000000001864531
1.00000000000932254
1.00000000000466138
1.00000000000233058
1.00000000000116529
1.00000000000058265
1.00000000000029132
1.00000000000014566
1.00000000000007283
1.00000000000003642
1.00000000000001821
1.00000000000000910
1.00000000000000466
1.00000000000000222
1.00000000000000111
1.00000000000000067
1.00000000000000022
1.00000000000000022
1.00000000000000000

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM