C 如何得到整数除法中的分数?

C 如何得到整数除法中的分数?,c,integer-division,C,Integer Division,如何将两个整数除以,得到C语言中的双精度或浮点型答案?您需要将其中一个或另一个转换为float或double int x = 1; int y = 3; // Before x / y; // (0!) // After ((double)x) / y; // (0.33333...) x / ((double)y); // (0.33333...) 当然,请确保将除法结果存储在双精度或浮点中!如果将结果存储在另一个int中,对您没有任何好处 关于@Chad的评论(“[tailsPerF

如何将两个整数除以,得到C语言中的双精度或浮点型答案?

您需要将其中一个或另一个转换为
float
double

int x = 1;
int y = 3;

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

// After
((double)x) / y; // (0.33333...)
x / ((double)y); // (0.33333...)
当然,请确保将除法结果存储在
双精度
浮点
中!如果将结果存储在另一个
int
中,对您没有任何好处


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

当你有空的时候,不要把双人或浮球传给别人。这可能与我在评论中提到的问题相同,您没有使用显式强制转换,并且您得到的值无效,因为double被读取为int

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

#include <stdio.h>
int main()
{
    double x = 3.14;
    printf("%d", x);
    return 0;
}
#包括
int main()
{
双x=3.14;
printf(“%d”,x);
返回0;
}
产出:

1374389535 1374389535 因为试图将double读取为int。

请使用类型转换。 比如说,

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

正确的。在执行除法之前转换整数。double tp;双x;x=tn//(tn为整数)通常为10 tp=x/fn;//fn也是一个int(通常为5),但我仍然得到0@Chad:代码看起来不错。您是如何确定结果为零的?您正在执行类似于printf(“%d”,tp)的操作吗?它试图将double的内容打印为int,但不会得到正确的结果。如果您这样做,编译器应该警告您。对于double,格式字符串是
%lf
。它实际上被发送到gui。。。tailsPer=tailsNum/((双)curNum)//tailsper是双[tailsPerField setIntValue:tailsper];//在可可中,“十进制”是一种表示法(如“十六进制”、“八进制”、“二进制”),适用于整数或非整数。我猜,你的意思是“得到一个非整数结果”。这就是用整数除法
printf(“%d%d/%d”x/y,x%y,y)得到分数(有理数)的方法。您确定不需要非整数结果吗?