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

喜欢ヅ旅行 2022-06-02 02:06 341阅读 0赞

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

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

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

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

发表评论

表情:
评论列表 (有 0 条评论,341人围观)

还没有评论,来说两句吧...

相关阅读