读书人

warning C4244: “=”: 从“double”变

发布时间: 2012-11-15 15:16:14 作者: rapoo

warning C4244: “=”: 从“double”转换到“float”,可能丢失数据
#include<stdio.h>
#include <math.h>
void main()
{
float A,B,C,P,CDH,KDH,JHB,TD,ZJ,SH,SJ,Z,FL,DJ,MULDJ,NM;
printf("请输入长度: ");
scanf_s("%f",&A);
printf("请输入宽度: ");
scanf_s("%f",&B);
C=A*B;
if(C<0.4)
printf("%f\n",P=2.5);
else if(C>=0.4&&C<0.8)
printf("%f\n",P=4.5);
else if(C>=0.8&&C<1)
printf("%f\n",P=9);
else if(C>=1&&C<1.5)
printf("%f\n",P=13);
else if(C>=1.5&&C<2)
printf("%f\n",P=4.5);
else if(C>=2)
printf("%f\n",P=C*9);
else;
{if(A<2)
printf("%f\n",DJ=3);
else if(A>=2&&A<3)
printf("%f\n",DJ=4);
else if(A>=3&&A<4)
printf("%f\n",DJ=5);
else if(A>4)
printf("%f\n",DJ=6);
else;
}
{if(A<1)
printf("%f\n",MULDJ=1280);
else if(A>=1&&A<2)
printf("%f\n",MULDJ=1420);
else if(A>=2&&A<2.5)
printf("%f\n",MULDJ=1660);
else if(A>=2.5&&A<3)
printf("%f\n",MULDJ=1900);
else if(A>=3&&A<4.5)
printf("%f\n",MULDJ=2090);
else if(A>=4.5&&A<=5)
printf("%f\n",MULDJ=2560);
else if(A>5)
printf("\n\n\n\n\n\n\n\n\n\n警告:长度不可大于5米");
else;}
CDH=0.05*0.09*DJ*A;
KDH=0.04*0.08*DJ*B;
NM=CDH+KDH;
FL=NM*MULDJ;
printf("木方料价格=%f\n",FL);
JHB=A*B*14;
printf("胶合板价格=%f\n",JHB);
TD=(FL+JHB+P)*0.03;
printf("铁钉价格=%f\n",TD);
ZJ=(FL+JHB+P)*0.03;
printf("底方材料增加费=%f\n",ZJ);
SH=(FL+JHB+P)*0.03;
printf("面板损耗费=%f\n",SH);
SJ=(FL+JHB+P+TD+ZJ+SH) *0.11;
printf("税金=%f\n",SJ);
Z=FL+JHB+P+TD+ZJ+SH+SJ;
printf("木底架单价=%f\n",Z);
}

1>------ 已启动生成: 项目: 00, 配置: Debug Win32 ------
1>正在编译...
1>00.cpp
1>f:\00\00.cpp(50) : warning C4244: “=”: 从“double”转换到“float”,可能丢失数据
1>f:\00\00.cpp(51) : warning C4244: “=”: 从“double”转换到“float”,可能丢失数据
1>f:\00\00.cpp(57) : warning C4244: “=”: 从“double”转换到“float”,可能丢失数据
1>f:\00\00.cpp(59) : warning C4244: “=”: 从“double”转换到“float”,可能丢失数据
1>f:\00\00.cpp(61) : warning C4244: “=”: 从“double”转换到“float”,可能丢失数据
1>f:\00\00.cpp(63) : warning C4244: “=”: 从“double”转换到“float”,可能丢失数据
1>正在链接...
1>正在嵌入清单...
1>生成日志保存在“file://f:\00\00\Debug\BuildLog.htm”
1>00 - 0 个错误,6 个警告
========== 生成: 成功 1 个,失败 0 个,最新 0 个,跳过 0 个 ==========

[解决办法]
float是单精度的数,而double是双精度的。一把一个双精度的数转成一个单精度的数。很有可能会丢数据的。
------解决方案--------------------


警告没有太大的问题

读书人网 >C++

热点推荐