下面是一个需要强制类型转换的经典例子:
int main(){
int sum = 103; //总数
int count = 7; //数目
double average; //平均数
average = (double) sum / count;
printf("Average is %lf!
", average);
return 0;
}
运行结果:Average is 14.714286!
sum 和 count 都是 int 类型,如果不进行干预,那么sum / count的运算结果也是 int 类型,小数部分将被丢弃;
虽然是 average 是 double 类型,可以接收小数部分,但是心有余力不足,
小数部分提前就被“阉割”了,它只能接收到整数部分,这就导致除法运算的结果严重失真。
- #include
-
- using namespace std;
-
- int main( )
- {
- int mile = 0;
- cin >> mile;
-
- if(mile <= 5)
- cout << "10.00" << endl;
- else if(mile > 5 && mile <= 10)
- printf("%.2f",10+(double)(mile-5)*2);//这里一定要有强转
- else if(mile > 10)
- printf("%.2f",(double)(mile-10)*2.5+10+5*2);//一定要有强转
-
- return 0;
- }