c语言中啥是单精度型和双精度型???各举个例子。。。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言中啥是单精度型和双精度型???各举个例子。。。相关的知识,希望对你有一定的参考价值。
单精度型和双精度型的区别在于它们的精确程度不一样,也就是小数部分的有效位数不一样。
单精度数(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位。
参考资料来源:百度百科-单精度浮点数
参考资料来源:百度百科-双精度浮点数
参考技术A c语言中 单精度型和双精度型 指两种 类型 的 浮点数。单精度型 即 float 型, 有效数字约10进制7位
双精度型 即 double 型, 有效数字约10进制15位
所以能描述的数值精度不同。
c语言 数据 用 IEEE 754 国际标准。float 型 用 4 字节存放,double 型 用 8 字节存放。
Single Precision 2进制: 数符1位,指数8 位,尾数 23 位
Double Precision 2进制: 数符1位,指数11 位,尾数 52 位
单精数值范围: ± ~10的-44.85次方 到 约 10的38.53次方
双精度数值范围 ± ~10的-323.3 次方 to 约 10的 308.3次方。
float a=1.234567;
double b=1.2345678901234;
-------------
10%3 整除取余数,得 1。
1 用 float 和 double 表示,精度没有区别。 a=(float)(10%3); b=(double)(10%3);
强制转换 要带 小括号。本回答被提问者和网友采纳 参考技术B 单精度就是float类型,是4个字节的,因此精度没有那么高
双精度就是double类型,是8个字节的,可以表示的数字当然就更多,小数点后面的精度也越高
float f; // 是4个字节的单精度变量
double d; // 是8个字节的双精度变量追问
float(10%3) double (10%3)结果有什么不同啊??
追答当然有不同,虽然都是10%3=3,但是前者强制转换成float类型,是4个字节的,而后者强制转换成double类型,是8个字节的。4个字节和8个字节,区别大吧,精度当然差很多
参考技术C float是单精度型,double是双精度型,例子:float a;
double b;
。。。。。。。。。。。追问
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这样也是不行的,它强制输出的是整形。
double (10%3)就是15位。
说到底就是个精度的问题
望采纳
什么是浮点型数据
参考技术A 问题一:“浮点型数据”是什么?为什么叫浮点型? 简单说就是表示带有小数的数据,与之相对的是整型,也就是只能保存整数。特别要说的是计算机保存浮点型数据是保存一个有效数字,然后保存一个介码,就像科学计数法一样保存数据。
问题二:C语言中,实型数据和浮点型数据是啥关系 应该是包含关系把,实型数据包括浮点型和双精度浮点型
问题三:浮点型数据的精度是什么意思 浮点型数据又称单精度浮点数,精度表示的是该浮点数的取值范围。。。
单精度类型:+-3.4*10^(-38)~~~+-3.4x10^3浮 单精度占用4个字节的内存
双精度类型:+-1.7*10^(-308)~~~+-1.7*10^308 双精度占用8个字节的内存
问题四:C语言中浮点型变量指什么意思? C语言中浮点型变量指的就是实数变量(存放可以带小数的数据的变量)。
实型变量分为两类:单精度型和双精度型。
其类型说明符为float 单精度说明符,double 双精度说明符。
实型变量说明的格式和书写规则与整型相同。
例如:
float x,y; (x,y为单精度实型量)double a,b,c; (a,b,c为双精度实型量)实型常数不分单、双精度,都按双精度double型处理。
单精度浮点数:
通常占用4个字节(32位)存储空间,其数值范围为-3.4E38~3.4E38,单精度浮点数最多有7位十进制有效数字,单精度浮点数的指数用“E”或“e”表示。如果某个数的有效数字位数超过7位,当把它定义为单精度变量时,超出的部分会自动四舍五入。
双精度浮点数:
通常占8 个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308。双精度完全保证的有效数字是15位,16位只是部分数值有保证。
问题五:java浮点型数据表示方法有几种,各是什么? Java浮点型数据类型有float和double两种,其中float是单精度浮点型,占32位,其对应的封装类为Float,double是双精度浮点型,占64位,其对应的封装类为Double,关于Float类和Double类详情请参考java api。
说明
数据类型所占位数的范围:float表示数据范围 3.4e-038~3.4e+038 ; double表示数据范围 1.7e-308~盯.7e+308 ;
双精度类型double比单精度类型float具有更高的精度,和更大的表示范围,常常用于科学计算等高精度场合。
变量定义示例
float f = 123.456f; 指定变量f为float型double d = 123.456; 指定变量d为double型,浮点数默认类型
问题六:什么是浮点型数据,能否举例说明? 就是小数 有精度和双精度之分区别在于有效位数不同
问题七:浮点型数据的有效数字是什么 20分 你看看 IEEE754 标准就明白了,浮点数的概念是相对于定点数的,浮点数是精度可变的一种表示法,其表示的数越大,其精度就越低,这也刚好满足科学上的需要。
单精度浮点数是 32 位的,格式如下:
域: 符号位 指数(阶码) 尾数
长度: 1 8 23
二进制:0 00000000 00000000000000000000000
可以看出,这其中真正用来表示原来数据的也就是 23 位的尾数部分,由于计算机内部的误差以及进制转换的问题,这 23位二进制 换算成 十进制 后有效数字也就 6-7 位了,其中的详细运算规则请查看该标准。
问题八:浮点型数是什么意思! 浮点型数据分为 浮点型常量和浮点型变量
实型也称为浮点型。实型常量也称为实数或者浮点数。在C语言中,实数只采用十进制。它有二种形式: 十进制数形式指数形式。
问题九:浮点型数据和双精度型数据的区别 用4个字节(32位)来存放一个浮点数,尾数有7个有效数字左右,叫单精度浮点数,用64位来存放,尾数有效数字可以增加到15位或16位,叫双精度浮点数。记住浮点型数据和双精度型数据的范围大小,触少位的就可以了。用的时候想到就可以
问题十:C语言中说的浮点型是什么意思呢 浮点型变量即为实型变量,代表实数;区别于代表整数的整形变量。
以上是关于c语言中啥是单精度型和双精度型???各举个例子。。。的主要内容,如果未能解决你的问题,请参考以下文章