单精度型和双精度型的区别在于它们的精确程度不一样,也就是小数部分的有效位数不一样。
单精度数(float型)在32位计算机中存储占用4字节,也就是32位,有效位数为7位,小数点后6位;双精度数(double型)在32位计算机中存储占用8字节,也就是64位,有效位数为16位,小数点后15位。
比如3.1415926535897932384这个小数,如果定义成float型,那么只会留下小数点后5位,也就是3.141592,如果定义成double型,那么只会留下小数点后15位,也就是3.141592653589793。
扩展资料
计算机的数都是以二进制进行存储。无论是单精度浮点数还是双精度浮点数,在计算机上的存储都遵循IEEE 754规范,使用二进制科学计数法。
二进制科学计数法包含三个部分:符号位,指数位和尾数部分。单精度数的符号位,指数位和尾数部分分别为1,8,23,而双精度为1,11,52。
而单双精度中的精度就主要取决于尾数部分的位数。float的尾数尾数为23位,除去全部为0的情况以外,最小为2的-23次方,因此float小数部分只能精确到后面6位。类似的,double尾数位数为52,最小为2的-52次方,因此只能精确到小数点后15位。
参考资料来源:百度百科-单精度浮点数
参考资料来源:百度百科-双精度浮点数
float(10%3) double (10%3)结果有什么不同啊??
追答当然有不同,虽然都是10%3=3,但是前者强制转换成float类型,是4个字节的,而后者强制转换成double类型,是8个字节的。4个字节和8个字节,区别大吧,精度当然差很多
float(10%3) double (10%3)结果有什么不同啊??
追答你这样是看不出结果的,你在用10(注意这是个整形数)%3的时候,结果先是强制转换为整形,也就是1(这是个整形数),接着再用float或者double进行强制转换也不会有精度问题,所以这样是看不出来的,你可以这样查看单精度和双精度数:
printf("%.15f\n%.15lf", float(10.0/3), double(10.0/3));
强制float和double输出小数点以后15位数据,你就可以看到这样的结果:
看,float型数据在小数点6位后就乱码了,这样明白了吧。
对了你如果用10/3这样也是不行的,它强制输出的是整形。
c语言中什么是单精度型和双精度型???各举个例子。。。
单精度型和双精度型的区别在于它们的精确程度不一样,也就是小数部分的有效位数不一样。单精度数(float型)在32位计算机中存储占用4字节,也就是32位,有效位数为7位,小数点后6位;双精度数(double型)在32位计算机中存储占用8字节,也就是64位,有效位数为16位,小数点后15位。比如3.1415926535...
c语言里单精度和双精度怎么理解?
单精度和双精度顾名思义是两种精度的不同划分,单精度float是保证7位有效数字,double是保证16位有效数字。例:(float)(10%3)结果是1.000000即七位有效数字,(后面不一定全是0,计算机可随机选择数字,所以整数1不等于float或double的1)(double)(10%3)同理结果是:1.XXXXXXXXXX……后面有...
c语言中,常量,变量,浮点,单精度,双精度是什么意思?举例
实型常量又称实数或浮点数。在C语言中可以用单精度型和双精度型两种形式表示实型常量,分别用类型名float和double进行定义。实型常量在一般的微型集中占用4个字节,一般形式或者指数形式,数值范围都是-1038~1038,有效数字是7位。浮点型数据又分为单精度型(float)和双精度型(double)两种。1、单(float...
C语言中的 单精度型 和双精度型是什么意思
双精度是1位符号,11位指数,52位小数。
C语言什么是单精度、双精度
在C语言的数据类型家族中,双精度与单精度是其中的浮点型数成员。双精度被命名为double类型,而单精度则对应为float类型。double类型的存储方式使用了64位的二进制,而float类型则仅需32位二进制。由此,双精度与单精度在数值范围的最大值与最小值,以及有效数字的个数上产生了显著的差异,这直接影响了...
单精度和双精度有什么不同?
1,单精度浮点型为float, 双精度浮点型为double。2,Float为单精度,内存中占4个字节,有效数位是7位(因为有正负,所以不是8位),在我的电脑且VC++6.0平台中默认显示是6位有效数字。3,double为双精度,占8个字节,有效数位是16位,但在我的电脑且VC++6.0平台中默认显示同样是6位有效数字。...
C语言里 单精度型与双精度型怎么表示?是什么样子?
单精度是float 双精度是double 都是浮点型,所谓浮点就是只能表示近似值,不能表示准确值,最后的几位小数是不准确的。如:include<stdio.h> void main(){ double a=2.9999999;printf("%f ",a);a=2.99999998;printf("%f ",a);a=2.99999997;printf("%f ",a);a=2.99999996;printf("%f "...
c语言数据类型中“双精度”“单精度”是什么意思?
双精度 叫 double 型, 单精度 float 型。double 型 用 64位2进制存放,float 型 用 32位2进制存放。所以,两种数 的 最大和最小 数值范围 不同,数的有效数字个数不同,也就是精度不同。double 型 最大数值 1.7976931348623158e+308 最小正数数值 2.2250738585072014e-308 有效数字 十...
什么是单、双精度浮点数?
浮点就是小数点位置不确定,比如123.43,6557.521.在C语言中,一般单精度数据类型比如int,数据的范围是2的31次方,而双精度类型的整型比如long int的数据范围是2的63次方.所以双精度和单精度主要的区别在于数据的范围大小.\\x0d\\x0a通俗的讲\\x0d\\x0a双精度的精度比单精度高\\x0d\\x0a表示的小数点...
在C语言里面,单精度和双精度有什么区别和联系
1、单精度和双精度数值类型最早出现在C语言中(比较通用的语言里面),在C语言中单精度类型称为浮点类型(Float),顾名思义是通过浮动小数点来实现数据的存储。这两个数据类型最早是为了科学计算而产生的,他能够给科学计算提供足够高的精度来存储对于精度要求比较高的数值。2、当我们比较两个棍子的长度...