Dividing 1/n always returns 0.0
17,462
Solution 1
(1/i)
i
is an int
, so that's integer division, resulting in 0 if i > 1
. Use 1.0/i
to get floating point division.
Solution 2
1
is an integer, i
is an integer. So 1/i
will be an integer, ie the result will be truncated. To perform floating-point division, one of the operands shall be of type float
(or, better, of type double
):
p3 *= 1. / i;
Solution 3
I had the same issue. The basic case:
when you want to get float output from two integers, you need to convert one into float
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
Author by
user1809300
Updated on August 12, 2022Comments
-
user1809300 over 1 year
I am trying to calculate
p1=(1/1)*(1/2)*...*(1/n)
but something is wrong and theprintf
gives me0.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; }