如何获得整数除法中的分数?

时间:2010-06-04 16:30:47

标签: c integer-division

如何划分两个整数并在C中得到双重或浮动答案?

2 个答案:

答案 0 :(得分:42)

您需要将一个或另一个投射到floatdouble

int x = 1;
int y = 3;

// Before
x / y; // (0!)

// After
((double)x) / y; // (0.33333...)
x / ((double)y); // (0.33333...)

当然,请确保您将该部门的结果存储在doublefloat中!如果您将结果存储在另一个int中,那对您没有任何好处。


关于@Chad的评论(“[tailsPerField setIntValue:tailsPer]”):

当您有setIntValue等可用时,请勿将双倍或浮动传递给setDoubleValue。这可能与我在评论中提到的问题相同,你没有使用显式转换,并且你得到一个无效的值,因为double被读作int。

例如,在我的系统上,文件:

#include <stdio.h>
int main()
{
    double x = 3.14;
    printf("%d", x);
    return 0;
}

输出:

1374389535

因为尝试将double读作int。

答案 1 :(得分:4)

使用类型转换。 例如,

main()
    {
        float a;
        int b = 2, c = 3;
        a = (float) b / (float) c;     // This is type-casting
        printf("%f", a);
    }