number - floating point arithmetic calculator
Dividir 1/n siempre devuelve 0.0 (3)
1
es un número entero, i
es un número entero. Entonces 1/i
seré un número entero, es decir , el resultado será truncado. Para realizar la división de coma flotante, uno de los operandos debe ser de tipo float
(o, mejor, de tipo double
):
p3 *= 1. / i;
Estoy tratando de calcular el p1 = (1/1) (1/2) ... * (1 / n) pero algo está mal y el printf me da 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
es un int
, entonces esa es una división entera, resultando en 0 si i > 1
. Usa 1.0/i
para obtener la división de punto flotante.
Tuve el mismo problema. El caso básico:
Cuando desee obtener una salida flotante de dos enteros, debe convertir uno en flotación
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