C语言里warning C4244: '=' : conversion from 'double ' to 'float ', possible loss of data
下面是题目#include<stdio.h>voidwo(){intcunqi;floatbenjin,lixi;printf("pleaseinputbenjin,cu...
下面是题目
#include <stdio.h>
void wo()
{
int cunqi;float benjin,lixi;
printf("please input benjin,cunqi:");
scanf("%f,%d",&benjin,&cunqi);
switch(cunqi)
{
case 1:lixi=benjin*cunqi*3.15/100.0;break;
case 2:lixi=benjin*cunqi*3.63/100.0;break;
case 3:lixi=benjin*cunqi*4.02/100.0;break;
case 5:lixi=benjin*cunqi*4.69/100.0;break;
case 8:lixi=benjin*cunqi*5.36/100.0;break;
}
printf("lixi=%.2f",lixi);
}
void main()
{
wo();
}
这个题目是要系统改的。系统有要求的。 展开
#include <stdio.h>
void wo()
{
int cunqi;float benjin,lixi;
printf("please input benjin,cunqi:");
scanf("%f,%d",&benjin,&cunqi);
switch(cunqi)
{
case 1:lixi=benjin*cunqi*3.15/100.0;break;
case 2:lixi=benjin*cunqi*3.63/100.0;break;
case 3:lixi=benjin*cunqi*4.02/100.0;break;
case 5:lixi=benjin*cunqi*4.69/100.0;break;
case 8:lixi=benjin*cunqi*5.36/100.0;break;
}
printf("lixi=%.2f",lixi);
}
void main()
{
wo();
}
这个题目是要系统改的。系统有要求的。 展开
3个回答
展开全部
warning C4244: '=' : conversion from 'double ' to 'float ', possible loss of data
Double(双精度浮点型)变量存储为 IEEE 64 位(8 个字节)浮点数值的形式
浮点数(floating point number),占用4byte。
你的lixi定义为float, cunqi定义为double。benjin*cunqi*3.15/100.0。任何数和double型数运算得到结果为double。而把这个运算式的结果(double型)赋给lixi(float型),8字节的数赋给4字节的数,会造成数据损失,就好像得到3.1416,只能储存到3.14一样。所以会出这个警告。
一般来说,你这个程序在精度不高的情况下,这个警告无害。
解决办法:数据格式统一。cunqi改为float,或lixi改为double。
Double(双精度浮点型)变量存储为 IEEE 64 位(8 个字节)浮点数值的形式
浮点数(floating point number),占用4byte。
你的lixi定义为float, cunqi定义为double。benjin*cunqi*3.15/100.0。任何数和double型数运算得到结果为double。而把这个运算式的结果(double型)赋给lixi(float型),8字节的数赋给4字节的数,会造成数据损失,就好像得到3.1416,只能储存到3.14一样。所以会出这个警告。
一般来说,你这个程序在精度不高的情况下,这个警告无害。
解决办法:数据格式统一。cunqi改为float,或lixi改为double。
展开全部
这是警告,不是错误。只需要将float benjin,lixi;,改为double benjin,lixi;即可。
例如,lixi=benjin*cunqi*3.15/100.0中,等于号=右边系统默认3.15和100.0的类型是double——8字节变量,而等于号=左边lixi是float类型——4字节,所以会有警告提示。
例如,lixi=benjin*cunqi*3.15/100.0中,等于号=右边系统默认3.15和100.0的类型是double——8字节变量,而等于号=左边lixi是float类型——4字节,所以会有警告提示。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
小数点后面的数去掉就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询