双除法一直给我 "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
给出0
,sum / 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结果除以整数权重就不会面临整数除法的问题了。
我有一个 return 类型为双精度的函数。
我的return声明是
return sum / (double)(weight/100);
其中 sum 是 double,weight 是 int。
我在 return 之前写了 printf 语句来检查值
总和是 25.000 和 (double)(weight/100) 给了我 .500
但是 return 声明给了我 "inf"
有什么问题吗?
看起来weight
可能是一个整数,所以weight/100
给出0
,sum / 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结果除以整数权重就不会面临整数除法的问题了。