第一个问题:使用求平方根函数sqrt,应该加一句#include<math.h> 第二个是警告,不改也没关系。警告的原因出在语句y=sqrt(-x);sqrt函数的返回值是double,而y的定义是float,将double赋值给float时可能会丢失数据。将y的定义改为double,就没有这个警告了。
double型精度比float精度高,编译器默认生成或运算的小数都是double型 警告的意思都是由double转换到float时可能会有精度损失,只是警告 建议所有float都使用double型数据 当然如果确信自己的运算都在精度范围内,可以忽略这个警告。
它是说,从 double 型转 float 型 可能 丢失数据。因为 double 型 数据允许的数值范围大,float 型 数据允许的数值范围小。这是警告信息。如果你的数据范围在 float 允许范围以内,你可以不去管它,或 加上 强制转换,例如:f = (float) d;例如 f = (float) ( 一串 double 型运算 表达式...
const Pi=3.1415926,这样Pi的值付不进去。可改为 const double Pi=3.1415926 或者#define Pi 3.1415926更好一些
当编译器先看见5时,认为这是整数运算,于是5/9就成了0.当看见5.0时,编译器知道这是浮点数运算,于是一切就正确了。当没有说明数据类型时,C语言就用自以为的类型进行处理,并且在需要的时候进行强制类型转换。
abs 的参数是 int,你a,b是浮点,所以有这警告。另外 while(abs(a)>=0, abs(b)>=0)里的逗号是不是应该修正下?
这个问题不用管它。用来计算工资float型精确度足够了。类似的问题还有unsigned int与int型的等等,只要是你有意的,完全没必要理会
warning 只是警告,不是错误,不影响编译的,当然有warning 说明你程序里还是有可能不符合语法的地方,你提供的信息不够,也不知道是哪里的问题。。。
area=2*3.14*r*r+3.14*r*2*h;3.14是double型,整个表达式升为double型 float型跟别的数据运算也会升为double型
k = (float)i/j 这样就可以 或者 k = i*1.0/j 也可以。