#include<iostream>
using namespace std;
int main ()
{
double avr_apple;
int total_apple, category;
total_apple=13;
category=2;
avr_apple=total_apple/category;
cout<<"average apple is : "<<avr_apple<<endl;
return 0;
}
int
不能包含小数点。在行中:
total_apple/category;
total_apple
和category
都是int
,所以当你把它们除以时,你会得到一个没有任何小数点的int
。
要解决此问题,请将total_apple
变量设为双变量或将static_cast
设为双:
avr_apple = static_cast<double>(total_apple) / category;
你也可以写:
avr_apple = (double) total_apple / category;
这是同一件事,看起来更简单,但对我来说更困惑,因为现在我有点困惑什么是双重的,total_apple
?,category
?,整个结果?嗯。我也很困惑这里使用的是哪种类型的铸件,是static_cast
还是其他类型的铸件?所以要避免这种情况。
这也包含了一个非常重要的教训,"计算机只做它被要求做的事情,没有别的,所以如果你想要正确的结果,一定要告诉它正确的事情。">