web-dev-qa-db-fra.com

Comment obtenir des fractions dans une division entière?

Comment divisez-vous deux entiers et obtenez une réponse double ou flottante en C?

24
Chad Carisch

Vous devez convertir l'un ou l'autre en float ou double.

int x = 1;
int y = 3;

// Before
x / y; // (0!)

// After
((double)x) / y; // (0.33333...)
x / ((double)y); // (0.33333...)

Bien sûr, assurez-vous que vous stockez le résultat de la division dans un double ou float! Cela ne sert à rien si vous stockez le résultat dans un autre int.


Concernant le commentaire de @ Chad ("[tailsPerField setIntValue:tailsPer] "):

Ne passez pas un double ou un flottant à setIntValue lorsque vous avez setDoubleValue , etc. disponible. C'est probablement le même problème que celui que j'ai mentionné dans le commentaire, où vous n'utilisez pas de transtypage explicite et où vous obtenez une valeur non valide car un double est lu comme un entier.

Par exemple, sur mon système, le fichier:

#include <stdio.h>
int main()
{
    double x = 3.14;
    printf("%d", x);
    return 0;
}

les sorties:

1374389535

parce que le double a été tenté d'être lu comme un int.

42
Mark Rushakoff

Utilisez la fonte de type. Par exemple,

main()
    {
        float a;
        int b = 2, c = 3;
        a = (float) b / (float) c;     // This is type-casting
        printf("%f", a);
    }
4
Pranav Totla