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