1. 首页 > 科技

warning C4244: '=' : conversion from 'double' to 'int',

warning C4244: '=' : conversion from 'double' to 'int', possible loss of data

求大神 warning C4244: '=' : conversion from 'double' to 'int', possible loss of data是什么意思?

#include <stdio.h>

#include <math.h>

void main(void)

{

double a,b;

printf("请输入该设备的价格:");

scanf("%f", &a);

if(a<=1000)

b=200;

else

if(a>1000&&a<=2000)

b=200+(a-1000)*0.1;

else

if(a>2000&&a<=4000)

b=300+(a-2000)*0.15;

else

if(a>4000&&a<=8000)

b=600+(a-4000)*0.2;

else

b=1400+(a-8000)*0.25;

printf("维修费为:%f\n", b);

}

这是我对你的程序进行修改后的, 将a,b定义为double类型, scanf("%f", &a);这里a之前要加&,还有将%%这个该成&&,你可以对照我的程序在修改一下。

warning C4244: '=' : conversion from 'double ' to 'int ', possible loss of data

sqrt函数在库中定义的类型是double型,因此计算得到的p,x1,x2应均为double型。

方法一:

改为:

#include "stdio.h"

#include "math.h"

void main()

{

int a,b,c;

double p,x1,x2;

scanf("请输入a,b,c的值为%d %d %d",&a,&b,&c);

p=sqrt(b*b-4*a*c);

x1=(-b+p)/2*a;

x2=(-b-p)/2*a;

printf("%d,%d",x1,x2);

}

方法二:强制类型转换

改为:

#include "stdio.h"

#include "math.h"

void main()

{

int a,b,c,p,x1,x2;

scanf("请输入a,b,c的值为%d %d %d",&a,&b,&c);

p=(int)(sqrt(b*b-4*a*c));

x1=(-b+p)/2*a;

x2=(-b-p)/2*a;

printf("%d,%d",x1,x2);

}

此方法中把开方得到的数据强制转化成int型,不建议~~~

warning C4244: '=' : conversion from 'double ' to 'int ', possible loss of data 老出现呢 请求解答

fabs功能:求浮点数x的绝对值 而你是int

warning C4244: '=' : conversion from 'double' to 'int', possible loss of data 这个错误在哪啊?

scanf("%d",&m);k=sqrt(m)

这里强制转换了

试下把K声明为double型

这里应该只是一个警告吧,应该运行的了。