online number float arithmetic c floating-point integer floating-point-conversion

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