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