Как вы делите два целых числа и получите двойной или плавающий ответ в C?
Как получить фракции в целочисленном делении?
Ответ 1
Вам нужно наложить один или другой на float
или double
.
int x = 1;
int y = 3;
// Before
x / y; // (0!)
// After
((double)x) / y; // (0.33333...)
x / ((double)y); // (0.33333...)
Конечно, убедитесь, что вы сохранили результат деления в double
или float
! Это не поможет вам сохранить результат в другом int
.
Относительно комментария @Chad ( "[tailsPerField setIntValue:tailsPer]
" ):
Не передавайте double или float в setIntValue
, если у вас setDoubleValue
и т.д. Вероятно, такая же проблема, как я упоминал в комментарии, где вы не используете явное приведение, и вы получаете недопустимое значение, потому что double читается как int.
Например, в моей системе файл:
#include <stdio.h>
int main()
{
double x = 3.14;
printf("%d", x);
return 0;
}
выходы:
1374389535
потому что двойник был прочитан как int.
Ответ 2
Используйте тип-литье. Например,
main()
{
float a;
int b=2, c= 3;
a=(float)b/(float)c; // This is type-casting
printf("%f",a);
}