双除法一直给我 "inf"

double division keeps giving me "inf"

我有一个 return 类型为双精度的函数。

我的return声明是

return sum / (double)(weight/100);

其中 sum 是 double,weight 是 int。 我在 return 之前写了 printf 语句来检查值 总和是 25.000 和 (double)(weight/100) 给了我 .500
但是 return 声明给了我 "inf"

有什么问题吗?

看起来weight可能是一个整数,所以weight/100给出0sum / 0.0给出inf。只需将其重写为:

return sum / (weight/100.0);

你必须先投重量才能加倍。现在它将一个 int 除以 100 得到一个新的 int。 (可能变为 0)然后将其转换为双精度数,然后将总和除以该答案。我会将其更改为:

return sum / ((double)weight)/100;

你正在做 weight 和 100 之间的整数除法。怎么样:

return 100 * sum / weight;

通过这种方式,您可以将 100 与 sum 相乘,并且由于 sum 是双倍的,所以您会再次得到双倍的结果。然后你把double结果除以整数权重就不会面临整数除法的问题了。