Comment divisez-vous deux entiers et obtenez une réponse double ou flottante en C?
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.
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);
}