knrt.net
当前位置:首页 >> DouBlE精度 >>

DouBlE精度

double是4字节,16位

基本上没有什么区别,都是表示小数不过它们的宽度不一样,或者说精度不一样,float是单精度,double是双精度它们表示小数的范围不一样,double能表示的范围,比float大double在内存中,占8个字节,float占4个字节float和double的关系就像short跟long的关系一样

和双精度类似的还有单精度,它们都是浮点类型 单精度型变量占用4个字节,能表示范围是-3.4*10^38 ~~3.4*10^38的数,有效位为7位 双精度型变量占用8个字节,能表示范围是-1.7*10^308 ~~1.7*10^308的数,有效位为15位 双精度与单精度可以理解为一种叫法~ 硬要说理由的话~这类的变量提供的高精度的数值,如圆周率用整型表示只能显示3,用单精度型就可以显示为3.141592,双精度就显示3.1415926535xx,共15位数字 明白没?

double 有效数字14位,float型有效数字7位,所以double精度高. double 占内存 8 字节,,float占内存 4 字节,float 省内存,运算速度快. 输入/输出格式 double 用 %lf, float 用 %f

16位

float是32位,double是64位 float32位中,有1位符号位,8位指数位,23位尾数为 double64位中,1位符号位,11位指数位,52位尾数位 取值范围看指数部分 float是有符号型,其中,8位指数位,2^8=(-128127),因此实际的范围是-2^1282^

精确度和范围是两回事好不好.比如我们用a,b,c,d,e来表示五个数,如果分别表示1,2,3,4,5,那么范围是1-5,如果表示2,4,6,8,10,那么范围是2-10,虽然范围提高了近一倍,但3,5,7,9这四个数无法表示出来,所以精确度下降了.float只有32位,所以理论上最多只能表示2^32个不同的数,而现在要让它表示范围为10^38,相当于2^127次方这么大范围的数,精度度当然很小啊.

double的精度一般是够用的,可以指定输出精度(指定小数点后保留多少位):cout.setf(ios::fixed); cout.precision(10); //小数点后保留10位

foat表示的小数点位数少,double能表示的小数点位数多,更加精确!Float为单精度,内存中占4个字节,有效数位是8位.double为双精度,占8个字节,有效数位是16位.

通俗点就是精确度高,可以精确到小数点位数多..双精度(double)型占8 个字节(64位)内存空间,数值范围为1.7E-308~1.7E+308,可提供16位有效数字.

mcrm.net | tuchengsm.com | rjps.net | 596dsw.cn | fnhp.net | 网站首页 | 网站地图
All rights reserved Powered by www.knrt.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com