在C语言中存在两种类型的浮点表示型,其中一种是单精度的浮点表示型(float)、双精度的浮点表示型(double)浮点表示型数据和一般的整形数据具有较大的差别,具体的差别就是浮点表示型数据是一个近似值并不是一个准确的值,這也就是为什么在比较浮点表示型数据的大小时不能采用直接等于的方式进行比较因为浮点表示型只是一个近似值,也就是一个值可能表示一个范围区间这样的表达方式就使得对浮点表示型采用相等的判断方法进行判断可能不合理,只有通过比较一个数是否在这个小的范围内在这个小的范围内说明这个数可以表述这个范围内的数据。
下面看一道关于浮点表示型的题目再说:
这个题只有搞清楚了数据的存储方式才能真正的清楚输出的结果
在32位系统中,float类型占有4个bytesdouble则占有8个bytes。对于整形数据而言我们很容易就知道数据是顺序存储的,雖然有大小端之分但是基本的准则我们认为是按照顺序存储的。但是float和double型却是比较特殊的数据类型因为这两种数据类型并不是按照整形数据的顺序存储方式进行存储的,而是按照一定的标志IEEE来实现的都有各自的标志编码方式:
浮点表示型变量在计算机内存中占用4字节(Byte),即32-bit。遵循IEEE-754格式标准一个浮点表示数由2部分组成:底数m 和 指数e。
底数部分: 使用2进制数来表示此浮点表示数的实际值
指数部分: 占用8-bit的二进制数,可表示数值范围为0-255但是指数应可正可负,所以IEEE规定此处算出的次方(即是来自内存存储的内容,存储指数)须减去127才是真正的指数(实际的指数如12.5转换为二进制为:., 3即为实际指数)。所以float的指数可从 -126到128.
底数部分实际是占用24-bit的一个值由于其朂高位始终为1,所以最高位省去不存储在存储中只有23-bit。到目前为止底数部分23位加上指数部分8位 使用31位。那么前面说过float是占用4个字节即32-bit, 那么还有一位是干嘛用的呢? 还有一位其实就是4字节中的最高位,用来指示浮点表示数的正负当最高位是1时,为负数最高位是0时,为正数
其实关于数据类型的存储方式问题的题目类型很多,其中比较常见的有:1、存储空间大小问题即字节对齐问题,这种问题一般要求我们对基本类型了解其中的基本原理相对来说比较简单。2、字符串的长度问题这种问题主要是通过sizeof,strlen这两个不同的函数来比较3、还有一类问题就是采用printf函数实现数据类型的转换问题。这种转化问题是在printf的格式中体现出来的是各种关于内存分布最容易失误的地方,为什么说最容易失误呢因为不同的参数就有可能产生不一样的输出结果,说白了这种题很容易出错是因为我们很少注意这些问题
整形的没小数位浮点表示型的有小数!
你对这个回答的评价是?
整型是整数的一部分所组成的集合;浮点表示型是实数中的一部分组成的集合带小數位。
整型变量就是存放整数的变量在Dos下,范围是:-32668~32767;在Windows下范围是-2的32次幂到2的32次幂-1
浮点表示变量:表示以浮点表示形式表示實数的变量,其中也规定了占用的空间量字节数;以及表示的范围。
你对这个回答的评价是
你对这个回答的评价是?
就是整数和小数嘚区别!
你对这个回答的评价是