除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; } 
 (1/i) 

i是一个int ,所以这是整数除法,结果为0,如果i > 1 。 使用1.0/i来获得浮点除法。

1是一个整数, i是一个整数。 所以1/i会是一个整数, 结果将被截断。 为了执行浮点除法,其中一个操作数应该是floattypes(或者更好的是doubletypes):

 p3 *= 1. / i; 

我遇到过同样的问题。 基本情况:

  • 当你想从两个整数获得浮点输出时,你需要将其转换为浮点数

    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 / b); // result is float 1.875000