除法1/n总是返回0.0

我在计算p1=(1/1)*(1/2)*...*(1/n)但有些地方不对劲printf给我0.000...0

#include <stdio.h>int main(void) {

    int i,num;
    float p3;

    do {
        printf ("give number N>3 : \n" );
        scanf( "%d", &num );
    } while( num <= 3 );

    i = 1;
    p3 = 1;  

    do {
        p3=p3*(1/i);
        printf( "%f\n",p3 );
    } while ( i <= num );

    printf("\nP3=%f",p3);
    return 0;}


ibeautiful
浏览 473回答 3
3回答

蛊毒传说

(1/i)i是int,所以这是整数除法,结果是0如果i > 1..使用1.0/i得到浮点除

慕容3067478

1是整数,i是个整数。所以1/i将是一个整数,伊结果将被截断。若要执行浮点除法,操作数之一应为类型。float(或者,更好的是,类型)double):p3&nbsp;*=&nbsp;1.&nbsp;/&nbsp;i;

PIPIONE

我也有过同样的问题。基本情况:当您想要从两个整数获得浮点数输出时,需要将其中一个转换为浮点数。int c = 15; int b = 8; printf("result is float %f\n", c / (float) b); // result is float 1.875000 printf("result is float %f\n", (float) c / &nbsp;b); // result is float 1.875000
打开App,查看更多内容
随时随地看视频慕课网APP