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

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

你需要将一个或另一个转换为floatdouble float

 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] ”):

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

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

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

输出:

  1374389535 

因为尝试将double读作int。

使用类型转换。 例如,

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