C++ Primer 学习笔记:浮点数精度问题

之前做过LFF Solver的时候遇到了浮点数的精度问题,因为浮点数计算到一定的精度之后的计算结果就全靠运气了。

这个本身是由于浮点数本身是按照科学计数法来存储的,在坐标轴上的分布是很不均匀,越靠近0浮点数越密集,越远离0浮点数越稀疏,所以在远离0的大的浮点数存在大数吃掉小数的情况,那么浮点数的精度(分辨率)在坐标轴上不同的位置也是不一样,越靠近0,精度越高,反之越低。

那么在计算机制单精度float和双精度double的一般的精度是多少呢?一般来说float的精度是1e-6,double是1e-10,也就是说当两个浮点数的距离小于这个精度之后就可以认为a和b是相等的,所以浮点数的等于运算也要注意这个情况,不可以茫然的直接使用==来判定浮点数的等于与否

其实有时候我们使用双精度求解出来的结果再重新代入相关过程去重新就散,结果可能不对,这个时候就是浮点数精度的问题

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值