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

Как разделить два целых числа и получить двойной или плавающий ответ в 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);
    }
Другие вопросы по тегам