1. 首页 > 科技

c语言double问题?

c语言 double类型保留小数问题

c语言double问题?

double类型保留小数有两种情况:1 在输出时保留两位小数:用printf通过格式字符即可控制小数的保留.如 double a = 1.234; printf(".2lf",a); 会输出1.232 在运行过程中结果保留两位小数.可以借助转为整型,及乘除运算实现.如 double a = 1.235; a = ((int)(a*100+0.5))/100.0; 运算结果,a=1.24.

C语言中long double的问题

1. long double输出时候要用lf修饰 printf("x=%lf\n",x);2. float ,double ,long double默认输出都是小数点后6位, double 和long double 想要输出多的话,可以用格式符来输出 printf("x=%.10lf\n",x); 这样就能输出小数点后10位.

C语言中的float和double引发的问题

double与float的区别在于在内存中存放数据时占用的内存不一样,前者8字节,后者4字节,也就是前者保存的小数位数比后者多一倍.举例说明对于1.9999996666,按照float输出,结果可能为1.999999,如果按照double可能为1.999999,这是为什么,因为c语言默认输出小数位数都取6位,这时候看起来没有区别,但是如果你进行格式控制,比如使用%.10,即小数保留10位,float输出结果为1.9999990000,而double输出结果则为1.9999996666.

c语言关于double的问题 (如图1)算出来应该是 -1 -2 但是却是没有解.

double的话,你用scanf("%lf", &a);//lf应该就对了

C语言的问题:double和float 的区别!

c语言float和double的区别 :float单精度,double双精度

C语言一个关于float和double 的问题

用double的时候记得输出格式里把%f改成%g,输入格式好像是 输入 %mlf十进制小数 %mle十进制指数 看错了 都改成%lf就行 还有是else if.double 和 float 的区别是double精度高,有效数字16位,float精度7位.但double消耗内存是float的两倍,double的运算速度比float慢得多,C语言中数学函数名称double 和 float不同,能用单精度时不要用双精度(以省内存,加快运算速度).另外 double转成float会丢失精度 而float转double不会,比double更精确的是long double 再精确就是无符号型的了

c语言问题,这里为什么不能用double

scanf使用的格式化字符必须合定义的类型一一匹配,不能混用int类型使用%dfloat类型使用%fdouble类型使用%lfa和b是double类型,不过是scanf和printf都需要使用%lf才可以.

c语言返回值为double为什么会出错?

注意:如果用double类型变量,输入函数scanf中必须要用%lf(就是小写的LF)才行,否则输入的数值以及显示的数值都会因位数不够而出现错误.如下简单程序可以自己做个实验,去掉lf中的l看看:#include<stdio.h> double main () { double a,b,c; printf ("输入两个加数a,b\n"); scanf ("%lf,%lf",&a,&b); //doulbe时候输入必须用%LF,否则空间不够会出现错误数 printf("a=%f,b=%f\n",a,b); c=a+b; printf("%f,%f,%f\n",a,b,c); return c; }

关于C中float和double的问题

首先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 暂时想这么多,多用用就熟了

C语言中double转成int的问题

因为无论是double还是int都是二进制储存,在二进制小数转换成十进制很容易出现误差导致问题,改成下面代码就看得出:int main() { double a; int b; int c; a=1234.56; b=(int)a; a=a-b;//这里a=0.5599999999 c=(int)(a*100);//55.99999999转换成int时,小数直接去掉,所以是55 return 0; }