2 回答
TA贡献1818条经验 获得超8个赞
float a,b,c,s,area; /*当你把这里的float改成double时*/
printf("Please input the lentghs of the sides:");
scanf("%lf%lf%lf",&a,&b,&c);/*这里请吧%f改成%lf*/
************************还有******************************:
float a,b,c; /*当你把这里的float改成double或int*/
float x1,x2,mid_trm;
printf("Please input the three coefficients of the function:");
scanf("%f%f%f",&a,&b,&c);/*这里请吧%f改成%lf(double),把%f改成%d(int)*/
printf("%f",area);
也一样,当你输出的数如area是float型的时候,请你把%f注意下,是double就把%lf写上,这是用法上的区别,用多了就习惯了
总的来说:
上面说的是用法,跟你说下他们的区别
单精度浮点数在机内占4个字节,用32位二进制描述。
双精度浮点数在机内占8个字节,用64位二进制描述。
对编程人员来说,double 和 float 的区别是double精度高,有效数字16位,float精度7位。但double消耗内存是float的两倍,double的运算速度比float慢得多,C语言中数学函数名称double 和 float不同,不要写错,能用单精度时不要用双精度(以省内存,加快运算速度)
TA贡献1806条经验 获得超8个赞
首先float长度是4字节,表示范围1.5e
-
45~
3.4e
+
38。double长度是8字节,精度较高。
使用float时,printf语句和scanf语句中的数据类型必须是%f,double的是%d
一般使用float就够用了,当然如果做乘法运算时,特别是两个较大的浮点数运算时,乘积的类型必须是double类型,不然结果错误。
还有,可以将float型赋值给double型,反过来不行。
编程过程中还要注意隐式类型转换,比如:
float
f=10.5;
int
i=f;
这样的直接给int型赋值的直接把小数点后面的截断,不考虑四舍五入,上面i的值最后是10,而不是11
暂时想这么多,多用用就熟了
- 2 回答
- 0 关注
- 554 浏览
添加回答
举报