64位浮点数_【C语⾔教程】C语⾔浮点数及其应⽤
浮点型常量
浮点型即⽣活中使⽤的⼩数类型(例如3.14),例如账户的余额,银⾏的存款利率等等都是浮点型。
C语⾔中按照精度的不同分别使⽤float,double和long double表⽰,默认浮点类型是double,float占据四个字节,double占据8个字
节,long double⼤于等于8个字节,Windows 32位和64位系统long double都是8个字节,Ubuntu18.04系统下long double是占据16个字节。
浮点数的常量可以使⽤⼗进制的⼩数和科学计数法表⽰,科学计数法可以存储特⼤或者特⼩的数字
浮点数变量
在初始化浮点数变量时,默认值建议为0.0或者0.0f,赋值时变量的值和变量的类型保持⼀致。
printf()函数输出float类型的变量使⽤格式符%f,输出double类型的变量使⽤%lf。
浮点型极限
C语⾔在limits.h的头⽂件中使⽤常量定义了float和double以及long double的极限值,我们可以使⽤sizeof()关键字求出float,double和long double的字节数量以及使⽤常量
FLT_MAX,FLT_MIN求出float表⽰的最⼤值和最⼩值以及DBL_MAX,DBL_MIN求出double所能表⽰的最⼤值和最⼩值。
在windows上double和long double是等价的,但是在Linux(例如Ubuntu 18.04上)long double是占据16个字节,这也就意味着long double的极限⽐double更⼤。
浮点型变量float浮点数在内存中的存储
⾸先明确⼀点,⽆论是整型、浮点型还是字符等等数据类型在计算机底层都是以⼆进制的⽅式存储的。
浮点数在内存中的存储和整数不同,因为整数都可以转换为⼀⼀对应的⼆进制数据。
⽽浮点数的存储是由符号位(sign)+指数位(exponent)+⼩数位(fraction)组成。
其中float是由1位符号位+8位指数+23位⼩数组成,
⽽double是由1位符号位+11位指数位+52位⼩数位组成。
int和float同样占据四个字节的内存,但是float所能表⽰的最⼤值⽐int⼤得多,其根本原因是浮点数在内存中是以指数的⽅式存储。
我们都知道在内存中,⼀个float类型的实数变量是占据32位,即32个⼆进制的0或者1组成
从低位依次到⾼位叫第0位和第31位,这32位可以由三部分组成:
符号位:第31位数表⽰符号位,如果为0表⽰整数,如果为1表⽰负数
指数:第23位到第30位,这8个⼆进制表⽰该实数转化为规格化的⼆进制实数后的指数与127(127即所谓的偏移量)之和所谓阶码,规格化的⼆进制实数只能在-127-127之间。
⼩数位:第0位到第22位,最多可以表⽰23位⼆进制⼩数,否则超过了就会产⽣误差。
浮点数相等性判断
float占据四个字节,提供的有效位是6-7位,⽽double占据⼋个字节,提供的有效位数是15-16位,如果在使⽤float或者double表⽰实数时超过有效数字,若拿来进⾏关系运算(例如等于)的话,会得到⼀个错误的结果。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论