浮点数精度问题

  关于精度问题,基本上都是再说浮点数,因为浮点数无法很准确的表示出来,也就是说表示的不是很准确,表示出来的数字总会比你想表现的数字小那么一点点或者大那么一点点,这种原因的产生是因为浮点数的储存问题。浮点数的储存,拿float类型来说,储存12.5,转为二进制就是1100.1,在计算机中储存要转为科学计数法,于是就成为1.1001*2^3(这是二进制所以是2的几次方)现在float类型一共有4个字节,32位,第一个位写的是符号位,0为正数1为负数,接下来的8位写指数,这个指数是要+127所以是3+127=130,后面的23位写小数点后的就是1001,如果后面不足23位的向后头补零,就是因为这种存储方式会不是那么精确,因为小数部分转为二进制时可能会无限循环下去,这样就会发生数字溢出现象,就会不精确,所以我们要给定一个精度。
    如:定义0首先定义宏  #define EPS 0.000001//定义误差是0.000001 

                                           -EPS<=a<=EPS//a就是0(在-0.000001到+0.000001之间都定义他为0)
   然后拿所需要对比的浮点数与所给定的0进行对比,在这个范围的就是0,大于这个范围的为正数,小于这个范围的为负数。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值