浮点数是什么?
浮点数,是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学计数法。有理数的认识:有理数为整数(正整数、0、负整数)和分数的统称。正整数和正分数合称为正有理数,负整数和负分数合称为负有理数。因而有理数集的数可分为正有理数、负有理数和零。由于任何一个整数或分数都可以化为十进制循环小数,反之,每一个十进制循环小数也能化为整数或分数,因此,有理数也可以定义为十进制循环小数。
浮点数是什么意思?
浮点数是表示小数的一种方法.所谓浮点就是小数点的位置不固定,与此相反有定点数,即小数点的位置固定.整数可以看做是一种特殊的定点数,即小数点在末尾.8086/8088中没有浮点数处理指令,不过从486起,CPU内置了浮点数处理器,可以执行浮点运算.一般的浮点数有点象科学计数法,包括符号位、指数部分和尾数部分.
浮点数是指小数点位置可以浮动的数据,通常以下式表示:
E次方
N = M·R
其中N为浮点数,M为尾数,E(为阶码也就是多少次方的意思),R为阶的基数,R一般为2进制(01),8...(01234567),16...(0123456789abcdef)
简单说浮点数是指能够精确到小数点以后的数值类型
浮点数表示方法
浮点数是一种公式化的表达方式,用来近似表示实数,并且可以在表达范围和表示精度之间进行权衡(因此被称为浮点数)。浮点数通常被表示为:N=M×R^E比如:12.345=1.2345×10^1其中,M(Mantissa)被称为浮点数的 尾数 ,R(Radix)被称为阶码的 基数 ,E(Exponent)被称为阶的 阶码 。计算机中一般规定R为2、8或16,是一个确定的常数,不需要在浮点数中明确表示出来。因此,在已知标准下,要表示浮点数。一是要给出尾数M的值,通常用定点小数形式表示,它决定了浮点数的表示精度,即可以给出的有效数字的位数。二是要给出阶码,通常用定点整数形式表示,它指出的是小数点在数据中的位置,决定了浮点数的表示范围。因此,在计算机中,浮点数通常被表示成如下格式:(假定为32位浮点数,基为2,其中最高位为符号位)。浮点数的规格化表示按照上面的指数表示方法,一个浮点数会有不同的表示:0.3×10^0;0.03×10^1;0.003×10^2;0.0003×10^3。为了提高数据的表示精度同时保证数据表示的唯一性,需要对浮点数做规格化处理。在计算机内,对非0值的浮点数,要求尾数的绝对值必须大于基数的倒数,即|M|≥1/R。即要求尾数域的最高有效位应为1,称满足这种表示要求的浮点数为规格化表示:把不满足这一表示要求的尾数,变成满足这一要求的尾数的操作过程,叫作浮点数的规格化处理,通过尾数移位和修改阶码实现。
浮点数是什么意思
但用定点数表示小数时,存在数值范围、精度范围有限的缺点,所以在计算机中,我们一般使用「浮点数」来表示小数。这篇文章,我们就来详细看一下浮点数到底是如何表示小数的,以及浮点数的的范围和精度有多大。什么是浮点数?首先,我们需要理解什么是浮点数?之前我们学习了定点数,其中「定点」指的是约定小数点位置固定不变。那浮点数的「浮点」就是指,其小数点的位置是可以是漂浮不定的。这怎么理解呢?其实,浮点数是采用科学计数法的方式来表示的,例如十进制小数 8.345,用科学计数法表示,可以有多种方式:看到了吗?用这种科学计数法的方式表示小数时,小数点的位置就变得「漂浮不定」了,这就是相对于定点数,浮点数名字的由来。使用同样的规则,对于二进制数,我们也可以用科学计数法表示,也就是说把基数 10 换成 2 即可。看到了吗?用这种科学计数法的方式表示小数时,小数点的位置就变得「漂浮不定」了,这就是相对于定点数,浮点数名字的由来。使用同样的规则,对于二进制数,我们也可以用科学计数法表示,也就是说把基数 10 换成 2 即可。假设我们定义如下规则来填充这些 bit:符号位 S 占 1 bit指数 E 占 10 bit尾数 M 占 21 bit按照这个规则,将十进制数 25.125 转换为浮点数,转换过程就是这样的(D代表十进制,B代表二进制):整数部分:25(D) = 11001(B)小数部分:0.125(D) = 0.001(B)用二进制科学计数法表示:25.125(D) = 11001.001(B) = 1.1001001 * 2^4(B)所以符号位 S = 0,尾数 M = 1.001001(B),指数 E = 4(D) = 100(B)。按照上面定义的规则,填充到 32 bit 上,就是这样:
什么是浮点型 能举例子嘛
浮点型数据定义浮点型数据分为 浮点型常量和浮点型变量浮点型常量实型也称为浮点型。实型常量也称为实数或者浮点数。在C语言中,实数只采用十进制。它有二种形式:?十进制数形式指数形式。数据介绍1.十进制数形式由数码0~ 9和小数点组成。例如:0.0,.25,5.789,0.13,5.0,300.,-267.8230等均为合法的实数。2.指数形式由十进制数,加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。其一般形式为a E n (a为十进制数,n为十进制整数)其值为 a*10,n 如: 2.1E5 (等于2.1*10的5次方), 3.7E-2 (等于3.7*10的-2次方) 0.5E7 (等于0.5*10的7次方), -2.8E-2 (等于-2.8*10的-2次方),以下不是合法的实数 345 (无小数点) E7 (阶码标志E之前无数字) -5 (无阶码标志) 53.-E3 (负号位置不对) 2.7E (无阶码)标准C允许浮点数使用后缀。后缀为“f”或“F”即表示该数为浮点数。如356f。例2.2说明了这种情况:void main(){printf("%f\n%f\n",356.,356f);}void 指明main不返回任何值 利用printf显示结果 结束浮点型变量:实型变量分为两类:单精度型和双精度型,其类型说明符为float 单精度说明符,double 双精度说明符。在Turbo C中单精度型占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,只能提供七位有效数字。双精度型占8 个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308,可提供16位有效数字。实型变量说明的格式和书写规则与整型相同。例如: float x,y; (x,y为单精度实型量)double a,b,c; (a,b,c为双精度实型量)实型常数不分单、双精度,都按双精度double型处理。相互转换IEEE754标准中浮点数表示格式IEEE规定的浮点数表示法是一种科学计数法,用符号(正或负)、指数和尾数来表示,底数被确定为2。也就是说浮点数被表示为尾数乘以2的指数次方再带上符号。下面以单精度浮点数为例来介绍浮点数的三个区域:符号域:符号域占1位,0表示正数,1表示负数。指数域:指数域共有8位,可表达的范围为:0~255。为能处理负指数,实际指数位存储在指数域中值减去一个偏移量(单精度为127,双精度为1023)。单精度浮点数的偏移量为127,故实际可表达的指数值的范围为-127~128。尾数域:尾数域共有23位。由于规范浮点数的小数点左侧必须为1,所以在保存尾数时,可以省略小数点前面这个1,从而腾出一个二进制位来保存更多的尾数。举例:比如对于单精度数而言,二进制的1001.101(对应于十进制的9.625)可以表达为1.001101 ×2^3,所以实际保存在尾数域中的值为0011 0100 0000 0000 0000 000,即去掉小数点左侧的1,并用0 在右侧补齐。(整数部分(9)的计算:1001小数部分(0.625)的计算:0.625*2=1.25--------10.25 *2=0.5 ----------00.5 *2=1.0 -----------1所以用二进制科学表示方式为:1.001101*2^3)实数与浮点数之间的变换举例例一:已知一个单精度浮点数用16进制数表示为:0xC0B40000,求此浮点数所表达的实数。先转换为二进制形式(注意:对于负数二进制补码转换成十进制一定要:先取反,后加1)C 0 B 4 0 0 0 01100 0000 1011 0100 0000 0000 0000 0000按照浮点数格式切割成相应的域?1 1000 0001 01101 000000000000000000经分析:符号域1 意味着负数;指数域为129 意味着实际的指数为2 (减去偏差值127);尾数域为01101 意味着实际的二进制尾数为1.01101 (加上隐含的小数点前面的1)。所以,实际的实数为:= -1.01101 × 2^ 2=- ( 1*2^0 + 1*2^(-2) + 1*2^(-3) + 1*2^(-5) ) × 2^2= -(1+0.25+0.125+0.03125)*4= -1.40625*4= -5.625例二:将实数-9.625变换为相应的浮点数格式。1) 求出该实数对应的二进制:1001.101,用科学技术法表达为:-1.001101 ×2^3;2) 因为负数,符号为1;3) 指数为3,故指数域的值为3 + 127 = 130,即二进制的10000010;4)?尾数为1.001101,省略小数点左边的1后为001101,右侧0补齐,补够23位,最终尾数域为:00110100000000000000000;5) 最终结果:1 10000010 00110100000000000000000,用16进制表示:0xC11A0000。
什么叫浮点类型
浮点类型指使小数点的位置可以根据需要而上下浮动,从而可以灵活地表达更大范围的实数。浮点类型分为单精度浮点型和双精度浮点型。
1、单精度浮点型专指占用32位存储空间的精度值。单精度在一些处理器上比双精度更快而且只占用双精度一半的空间,但是当值很大或很小的时候,单精度浮点型将变得不精确。当需要小数部分并且对精度的要求不高时,单精度浮点型的变量是有用的。
2、双精度型,占用64位的存储空间。在一些现代的被优化用来进行高速数学计算的处理器上双精度型实际上比单精度的快,当需要保持多次反复迭代的计算的精确性时,或在操作值很大的数字时,双精度型是最好的选择。