为什么把double换成int输出值就为0.00了呢?
https://www.imooc.com/qadetail/168807
1 //我觉得原本是double类型的cost精度那么高,非要转化为int型数据输出的时候肯定有问题,转换为二进制后cos//t这个内存数据可以很明显看出低32位全是0,而%d则只能截取到低32位,所以输出为0,然后在main函数中你再///以%lf输出,结果就会自动加上0.00了 2 3 #include<stdio.h> 4 int misska(int n,int m) 5 { 6 float cost; 7 if(n<3) 8 { 9 cost = 13; 10 } 11 else 12 { 13 if(m >= 23 || m < 5) 14 { 15 cost = 13 + (n-3)*2.3*1.2+1; 16 // printf("cost1:%d\n",cost); 17 } 18 else 19 { 20 cost = 13+(n-3)*2.3 + 1; 21 printf("Cost by float:%lf\n",cost); 22 } 23 } 24 printf("Cost by Integer:%d\n",cost);//这里可以看到转换成int输出后失真,直接变为一个负无穷数 25 return cost;//这里返回的cost已经是一个int类型的,所以必定失真 26 } 27 int main() 28 { 29 printf("Money1:%.2f\n",misska(12,9));//输出的类型确是%lf高精度型 30 printf("Money2:%.2f\n",misska(12,18));//数据读取溢出,ide输出0.00 31 printf("Money:%.2f\n",misska(12,9)+misska(12,18)); 32 33 return 0; 34 }
种一棵树最好的时间是十年前,其次是现在。

浙公网安备 33010602011771号