Подтвердить что ты не робот

Как получить фракции в целочисленном делении?

Как вы делите два целых числа и получите двойной или плавающий ответ в C?

4b9b3361

Ответ 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);
    }