双师继续给我" inf"

时间:2015-02-21 20:18:39

标签: c double

我有一个返回类型为double的函数。

我的退货声明是

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

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

它出了什么问题?

3 个答案:

答案 0 :(得分:2)

你在weight和100之间进行整数除法。如何:

return 100 * sum / weight;

通过这种方式,您可以乘以100和sum并再次获得双倍,因为sum是双倍的。然后将双重结果除以整数权重,并且不会遇到整数除法的问题。

答案 1 :(得分:1)

看起来weight可能是整数,因此weight/100提供0,而sum / 0.0提供inf。只需将其重写为:

return sum / (weight/100.0);

答案 2 :(得分:0)

你必须先将体重增加到两倍。现在它将int除以100除以新的int。 (这可能变为0)然后你把它变成一个双,然后你用这个答案来划分和。我会改为:

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