计算机中浮点数的表示方法

  1. 整型表示方法
    • integer类型占用的是4个字节,可以表示的数字范围在2**-32到2**32之间.且每一个整数在计算机里面都有相应的内存表示方法,例如数字12345的表示方法就是:00000000 00000000 00110000 00111001即根据二进制到十进制的转换方法: 12345 = 213 + 212 + 25 + 24 + 23 + 20
  2. 浮点型表示方法
    • 浮点型不能使用与整型相同的表示方法原因
      • 问题:如何在二进制中保存小数点的位置
      • 方法:采用科学计数法来表示浮点数,因为在科学技术法里面,小数点的位置总是固定,就是在第一个数字后面,例如12345的科学计数法的表示为: 1.2345 * 105。而0.012345的科学计数法表示方式为: 1.2345 * 10-2.
      • 说明:因为我们的计算机比较笨,只能处理0和1,所以在计算机里面表示浮点数的时候,上面的公式中的基数b是2,而不是10.在计算机内存当中,保存的实际是浮点数的计算公式,而不是确切的值,所以说计算机里面浮点数都是近似值,而不是确切的值.在计算机中,以float类型为例,内存中32个位所代表的内容分别是:SEEEEEEE EMMMMMMM MMMMMMMM MMMMMMMM
        • 代表符号位,1代表这个浮点数是一个负数,而0则表示是正数。
        • 就是科学计数法里面的指数e,由于 e既有可能是正数,也有可能是负数,因为1234.5的科学计数法是1.2345 * 104,0.12345的科学计数法是1.2345 * 10-1。所以e的计算规则是EEEEEEE E表示的数减去27- 17是因为我们有8个位来表示指数),这样8个表示指数的位就可以用来表示负数和正数了。 
        • 就是用来计算科学计数法里面的m,计算规则是,从左往右开始,第一个M代表2-1,第二个M表示2-2,依次类推。由于m要么就是大于1的小数,要么就是小于1的小数(记住,我们计数法里面的基数是,而不是10),如果e的值大于0,那么我们就可以加上这个1,如果e的值小于0,那么我们可以省略这个1,这是因为我们总是可以通过调整e的值来做到这一点。因此m里面小数点前面的1被省略掉了,这个省略掉的1可以根据e的值来推算出m的小数点前面到底有没有这个1
  3. Double类型的表示方法
    • 对于double类型来说,在计算机中各个位表示的信息如下所示:SEEEEEEE EEEEMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM
  4. 举例
    • double a = 1.345f;double b = 1.123f;
    • 在内存中看一看a的值是3ff5851ec0000000,在计算器里面将这个十六进制的值换算成二进制的是:11111111110101100001010001111011000000000000000000000000000000,因为计算器会将前缀零省略掉,因此上面的值实际上是:00111111 11110101 10000101 00011110 11000000 00000000 0000000000000000由于e部分的值大于等于0,因为127 – (27 – 1) = 1,所以我们在计算m的时候需要加上隐含的1,也就是说上面黄色背景的值实际上表示的是:(十进制的)1.0 + 0101 10000101 00011110 11000000 00000000 0000000000000000所表示的小数1.3450000286102294921875(计算过程在这里省去)
    • 因此按照上面的算法,b的值实际上应该是1.1230000257492065。
  5. 结论
    • 最后洋洋洒洒一大篇的结论就是,浮点类型不能用==号来判断,因为浮点数是一个近似值,只能通过两者相减小于一个可以接受的误差来判断。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值