c语言中什么是单精度型和双精度型???各举个例子。。。

Python025

c语言中什么是单精度型和双精度型???各举个例子。。。,第1张

精度型和双精度型的区别在于它们的精确程度不一样,也就是小数部分的有效位数不一样。

单精度数(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是保证7位有效数字,double是保证16位有效数字。

例:(float)(10%3)

结果是1.000000即七位有效数字,(后面不一定全是0,计算机可随机选择数字,所以整数1不等于float或double的1)

(double)(10%3)

同理结果是:1.XXXXXXXXXX……后面有十五位的有效数字

虽然整数位都是1,但由于有效位数不同,即后面随机派出的小数可能不同,所以二者理论上不同,实际比较不能用==,要用fabs()<1e-6.

1、双精度浮点型数据用%lf输出。因为double是8个字节的,float是4个字节的,%f 的格式就是4个字节的,而 %lf 就是8个字节的。  例如:printf("%lf\n",x)

2、short 占用内存空间2个字节,短整型数据用%d输出  例如:printf("%d\n",a)

例如:

#include <stdio.h>

int main()

{

double x

short int a;

printf("%lf",x)     // 输入double型

printf("%d",a)    //输入短整型

return 0

}

扩展资料

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

c语言是一个有结构化程序设计、具有变量作用域(variable scope)以及递归功能的过程式语言。

双精度浮点数(double)是计算机使用的一种数据类型,使用 64 位(8字节) 来存储一个浮点数。 它可以表示十进制的15或16位有效数字,其数值范围为-1.7E308~+1.7E308。

短整型的二进制位长是16位。短整型所能表示的整数的值域为-32768~32767。