float和double类型的区别如下:
1、变量类型不同
float属于单精度型浮点数据。
double属于双精度型浮点数据。
2、指数范围不同
float的指数范围为-127~128。
double而double的指数范围为-1023~1024
3、表达式指数位不同
float的表达式为1bit(符号位)+8bits(指数位)+23bits(尾数位)
double的表达式为1bit(符号位)+ 11bits(指数位)+ 52bits(尾数位)
4、占用内存空间不同
float占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38。
double占8 个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308。
5、有效位数不同
float只能提供七位有效数字。
double可提供16位有效数字。
参考资料来源:百度百科——浮点型数据
double 和 float 的区别是double精度高,有效数字16位,float精度7位。但double消耗内存是float的两倍,double的运算速度比float慢得多,C语言中数学函数名称double 和 float不同,不要写错,能用单精度时不要用双精度(以省内存,加快运算速度)。
类型 比特数 有效数字 数值范围
float 32 6-7 -3.4*10(-38)~3.4*10(38)
double 64 15-16 -1.7*10(-308)~1.7*10(308)
long double 128 18-19 -1.2*10(-4932)~1.2*10(4932)
简单来说,Float为单精度,内存中占4个字节,有效数位是7位(因为有正负,所以不是8位),在我的电脑且VC++6.0平台中默认显示是6位有效数字;double为双精度,占8个字节,有效数位是16位,但在我的电脑且VC++6.0平台中默认显示同样是6位有效数字。
java中有这样一个规则:
只要带有小数点的数,它的默认类型就是dobule类型
如: num=2.4;//这个num的数据类型是double
num1=2.4f;//那么这个num1的数据类型就是float类型
拿你的例子来说:
d1 = (i1+i2)*1.2;//这一步,d1的默认数据类型是:double
当用float类型的数据接收的时候,就需要强制转化-->把d1这个double类型的数据强制转化为flaot类型.
希望能帮到你,我说的不明白的话,再问
float是单精度浮点型,double是双精度浮点型。float到double不需要转换,编译会自动进行转化。但从double到float就需要强制转换。不过没有特殊状况最好不要这样做,因为这样可能会的到不是你想要的结果。
默认的浮点数都是double 只有在数组后边加上f才是 float的
float f=12.2f;
这是定义一个float类型的数据